【发布时间】:2019-12-13 09:39:12
【问题描述】:
我已经完成了一个非常基本的应用程序(wpf/c#)。该解决方案由 3 个项目组成:
- 应用的主要项目
- 用于存储应用资源(图像和 txt 文件)的类库项目
- 我用来创建 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