c# 发布带有文件夹数据的 windows 表单应用程序的 exe

c# publish exe of windows form application with folder data

我已经用 c# 发布了一个 windows 表单应用程序。 问题是我在项目文件夹中有一个名为“dati”的文件夹

在代码中,当我尝试从文件夹中读取时,我使用了这条指令

string projectDirectory = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName;

当我尝试读取此文件夹中的 xls 文件时,我收到了这条指令

string path = projectDirectory + "\dati\dati.xlsx";
        string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO;\"";

在调试中一切正常,如果我在 bin/Debug 或 bin/Release 文件夹中执行 .exe 也是如此。 当我发布应用程序并将其放入另一个文件夹(如 C:\ProjectPublished)时,我收到此错误,因为它试图从另一个路径读取 dati 文件夹。

我必须做什么? 谢谢

使用数据文件的最简单方法是将它们作为内容项包含在项目中。在解决方案资源管理器中右键单击您的 *.xlsx 文件并将 Build Action 设置为 Content 并将 Copy 到输出目录 始终。 它将使构建引擎将数据文件包含到 /bin 目录中。 然后您可能需要设置部署引擎以将此文件包含在可部署包中。例如,如果您使用的是 ClickOnce,则可能需要将此文件包含在项目的“发布”选项卡中

使用这个:

string projectDirectory = AppDomain.CurrentDomain.BaseDirectory ;

这将为您提供可执行文件所在的目录。