【问题标题】:wpf string files not found on release version but work in debug c#在发布版本上找不到 wpf 字符串文件,但在调试 c# 中工作
【发布时间】:2019-12-13 09:39:12
【问题描述】:

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

  1. 应用的主要项目
  2. 用于存储应用资源(图像和 txt 文件)的类库项目
  3. 我用来创建 exe 文件以分发给其他人的安装项目 机器。

当我使用安装项目部署项目并安装在计算机上时,虽然项目在调试模式下工作正常,但我可以从库项目访问图像文件(我可以看到应用程序中的库项目有一个 dll 文件文件夹),但它无法访问文本文件,抱怨找不到路径。这是我第一次完成应用程序并尝试部署它,所以有点不知所措,为什么设置没有提供对文本文件的正确引用,但它似乎与位于相同的图像文件一起工作图书馆项目。 有人可以指出我在哪里查看它以进行故障排除的正确方向吗?

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

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

【问题讨论】:

  • 您使用绝对路径还是相对路径?因为很明显,在其他任何地方安装应用程序时,绝对的都行不通。
  • @Christopher 感谢您的快速回复。我使用相对路径,代码如下: public static string GeDescription() { StringBuilder bodyContent = new StringBuilder(); string fileName = @"Resources/Dscrpt.txt"; string filePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), fileName);使用 (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 所以看起来安装程序正在将路径的“\Resources\Dscrpt.tx”部分附加到目标安装文件夹。我对编程相当陌生,所以不太了解正在发生的事情。图像文件工作正常,但我对它们使用了不同的技术

标签: c# wpf path setup-project class-library


【解决方案1】:

终于,我成功破解了它。为遇到相同问题的任何人发布答案。 这里的问题不在于文件路径,即使我想出了更清晰的构建技术,请参阅上面的 cmets。问题在于 VS2017 中的安装项目创建包的方式。它处理不同的图像和文本文件,即使两者都在同一个库项目中,基本上对于文本文件我必须执行以下操作才能使其正常工作:

在设置项目中打开文件系统

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

将“资源”文件夹的“AlwaysCopy”属性设置为“真”

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

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

重建安装项目

.

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多