C# 在发布版本中找不到wpf字符串文件,但可以在调试c中使用#

C# 在发布版本中找不到wpf字符串文件,但可以在调试c中使用#,c#,wpf,path,setup-project,class-library,C#,Wpf,Path,Setup Project,Class Library,我已经完成了一个非常基本的应用程序(wpf/c)。该解决方案由3个项目组成: 应用程序的主要项目 用于存储应用程序资源(图像和txt文件)的类库项目 我用来创建exe文件以分发给其他用户的安装项目 机器 当我使用安装项目部署项目并安装在计算机上时,项目在调试模式下工作正常,我可以访问库项目中的图像文件(我可以看到应用程序文件夹中有库项目的dll文件),但它无法访问文本文件,抱怨找不到路径。这是我第一次完成应用程序并尝试部署它,所以我有点不知所措,为什么安装程序没有提供对文本文件的正确引用,但它似

我已经完成了一个非常基本的应用程序(wpf/c)。该解决方案由3个项目组成:

  • 应用程序的主要项目
  • 用于存储应用程序资源(图像和txt文件)的类库项目
  • 我用来创建exe文件以分发给其他用户的安装项目 机器
  • 当我使用安装项目部署项目并安装在计算机上时,项目在调试模式下工作正常,我可以访问库项目中的图像文件(我可以看到应用程序文件夹中有库项目的dll文件),但它无法访问文本文件,抱怨找不到路径。这是我第一次完成应用程序并尝试部署它,所以我有点不知所措,为什么安装程序没有提供对文本文件的正确引用,但它似乎可以很好地处理位于同一库项目中的图像文件。 有人能告诉我正确的方向,在哪里查看它以进行故障排除吗

    我已经清理并重建了解决方案中的所有项目。在调试模式下重新测试(工作正常)。试图搜索msdn和StackOverflow,但我找不到任何可以使用或遵循的指导


    我希望能够在发布/安装的应用程序版本中显示文本文件中的文本,与在调试模式下的工作方式相同。目前它找不到相关的txt文件。

    最后,我设法破解了它。为有相同问题的人发布答案。 这里的问题不在于文件路径,尽管我提出了一种更清晰的构建方法,请参见上面的评论。问题在于VS2017中安装项目创建包的方式。它以不同的方式处理图像和文本文件,即使它们都在同一个库项目中,基本上对于文本文件,我必须执行以下操作才能使其正常工作:

    在安装项目中打开文件系统

    在“应用程序文件夹”下创建“资源”文件夹

    将“资源”文件夹“AlwayScope”属性设置为“true”

    在“资源”文件夹中,右键单击并选择添加>文件

    导航到包含文件的文件夹并将其全部选中(确保将文件设置为资源或嵌入式资源)

    重新生成安装项目

    所以总结一下,我必须特别告诉VisualStudio在安装期间在应用程序文件夹中构建文件夹结构。 现在,当我运行安装程序时,文本文件包含在包中,并在独立安装期间创建。还包括下面的屏幕截图


    您使用绝对路径还是相对路径?因为在其他地方安装应用程序时,绝对值显然不起作用。@Christopher感谢您的快速回复。我使用相对路径,代码如下:公共静态字符串GeDescription(){StringBuilder bodyContent=new StringBuilder();字符串文件名=@“Resources/Dscrpt.txt”;字符串文件路径=Path.Combine(Path.GetDirectoryName(Assembly.getExecutionGassembly().Location),文件名);使用(StreamReader sr=new StreamReader(filePath)){bodyContent.Append(sr.ReadToEnd());}返回File.ReadAllText(fileName);}并且不认为这些是正确的相对路径。我似乎记得它们必须看起来像“/Resources/Dscrpt.txt”甚至“/Resources/Dscrpt.txt”在任何情况下,您都可能希望使用Path类构建路径。什么是工作目录?所有相对路径都指向它。通常情况下,它是可执行文件在文件夹结构中的位置,但有些事情可能会弄乱它-在提升权限下运行,在您用来启动它的桌面上有错误的链接。@Christopher Abosulte路径是C:\Users\user\source\repos\SolutionFolder\FileStore\Resources\Dscrpt.txt“FileStore”是在主应用程序项目中引用的库项目的名称发布版本:应用程序正在搜索的路径是:C:\Program Files\AppName\AppFolder\Resources\Dscrpt.txt,因此看起来安装程序正在附加“\resource”es\Dscrpt.tx'是目标安装文件夹路径的一部分。我对编程相当陌生,因此不太了解正在发生的事情。图像文件工作正常,但我对它们使用了不同的技术