首页 > 解决方案 > 发布 WPF 桌面应用程序后无法读取我的项目中的文件

问题描述

我有一个 WPF 桌面应用程序。当我处于调试模式时,我可以访问 file.sql 并读取内容。当我使用 Visual Studio 发布文件并尝试运行 click once 应用程序时,我无法读取 file.sql 文件和应用程序找不到路径。我调用以读取 file.sql 的 .cs 文件位于同一文件夹中。

string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,@"..\..\ControlFolder","file.sql");
string readQuery = File.ReadAllText(path);

如何确保在发布我的应用程序后能够读取 file.sql?

标签: c#.netwpf

解决方案


发布时,您需要确保将“file.sql”也发布到二进制输出路径。最佳实践是避免使用源代码的相对路径,相反,您应该始终确保指向您(开发人员)将确保在已发布区域中存在的文件。

这是我要做的:

  1. 在 Visual Studio 中,转到“file.sql”的属性并确保将其设置为“Content”和“Copy if newer”。这将确保您的“file.sql”将始终存在于二进制输出路径中。如果在 Visual Studio 中,您已将“file.sql”放置在名为“ControlFolder”的文件夹中,那么这意味着您的二进制输出内容将包含一个“.\ControlFolder\file.sql”文件。

  2. 修复您的代码,使其永远不会指向源代码的相对路径。相反,依赖二进制输出路径。因此,不要使用您共享的代码,而是将其替换为:

string path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), @"ControlFolder\file.sql");
string readQuery = File.ReadAllText(path);

推荐阅读