![](/img/trans.png)
[英]How do I Embed a font with my C# application? (using Visual Studio 2005)
[英]How do I publish an Access database with my C# application using Visual Studio?
我试图弄清楚如何发布我编写的应用程序。 我们当时没上课,我的程序设计老师遇到了一些健康问题,目前无法使用。
我找到了“发布”选项,可以用安装程序来创建一个文件夹...但是我打开了它,它只是打开了程序,并无限地向我发送垃圾邮件,抱怨我的Access数据库(位于bin中) >在构建阶段进行调试)(从我不认识的一些奇怪的路径)无法访问。 我尝试使用WiX,但尝试安装时却出现错误,说它无权访问安装文件夹(以admin身份运行)。 我已经搜查了几个小时,戳了一下,探索了一下,而且距离还不算太远。 任何人都可以ELI5吗?
当您将“发布”选项用于桌面应用程序时,VS将创建一个单击一次安装程序,该安装程序会将其了解的所有文件放置在适当的位置。
不幸的是,它无法猜测您的应用程序需要哪些其他文件,因此您需要明确地告诉它。
如果右键单击“项目”->“属性”,请转到“发布”选项卡,然后单击“应用程序文件”按钮,您将看到将添加到安装程序中的所有文件。
接下来,单击底部的“显示所有文件”。 查找数据库,然后将“发布状态”更改为“数据文件”。
请注意,我只使用过一次单击安装程序来安装永不修改的静态文件(如图像/文档),仅在以后的发行版中将其替换。 我不确定在更新过程中是否会保留您的(修改过的)数据库,但我怀疑不会。
如果“单击一次”安装过程过于简单,无法满足您的需要,则VS2010会提供“安装项目”,以创建支持逻辑/代码的更复杂的安装程序。 对于VS2012,通常建议的选项是Wix 。 不幸的是,它的学习曲线很陡峭,但是它几乎可以完成您需要的任何事情。
我相信VS2013及更高版本通过扩展再次设置了项目,但我自己没有尝试过。
编辑:
解决此问题的最简单方法可能是根据应用程序的执行位置以编程方式设置连接字符串。
请注意,按照此答案, clickonce应用程序通常是在用户配置文件目录的深处执行的(另请阅读以下有关数据目录的答案 )。 这是ClickOnce工作方式的副作用(它希望安装在保证用户具有写访问权的位置)。
检查该文件夹中是否确实存在.mdb。 如果不是,则需要调整.mdb
的安装程序或属性。 假设它与可执行文件位于同一位置,则可以告诉应用程序在哪里找到它...
string dbPath = IO.Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"access.mdb");
string connectionString = String.Format(
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}",
dbPath);
我不确定您为什么认为安装程序添加的数据库文件位于C:\\
下的目录中。 您可能没有查看安装程序创建的文件。
为避免混淆,请尝试将名称从access.mdb
更改为其他名称( temp.mdb
?),构建安装程序,然后重命名为access.mdb
。 现在,在安装应用程序后,请确保您正在查找的文件现在称为temp.mdb
。 如果不是,则说明您查找的文件错误。
此链接具有数据库连接的完整演示,并带有数据库发布C#应用程序。 该应用程序还在另一台计算机上运行。 如何使用Access数据库发布C#应用程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.