使用 FileInfo 读取文件时出现 FileNotFoundException

FileNotFoundException when reading file using FileInfo

我目前正在使用 fileinfo 在 xml 验证器中使用 xsd 文件。

我有 3 个项目,一个 GUI,界面,项目。输入项目和测试项目。

在输入项目中,我有一个 class,它根据也在同一对象中的文件的路径创建一个 FileInfo 对象:

new FileInfo(@"Xsd\Version_813\kvppt-8130.xsd")

这在我 运行 测试和 GUI 时给我带来了麻烦。例如,当我启动我的 GUI 时,有时代码可以工作并且没有问题,但有时 FileInfo 将从 GUI 项目中搜索 Bin/debug 文件夹,而 XSD 不在那里。

我知道这是有意为之的,但是有什么方法可以使它适用于单元测试项目和 GUI 项目。

我试过以下方法:

var executingFileInfo = new FileInfo(Assembly.GetExecutingAssembly().Location);
var path = executingFileInfo.DirectoryName + Path.DirectorySeparatorChar + @"Xsd\Version_813\kvppt-8130.xsd";
Return new FileInfo(path);

但这不是解决方案,因为它仍会选择启动项目。

--- 编辑:

在尝试了评论中的一些建议后,我发现我的问题有点不同。我发现如果我在 运行 应用程序之前按全部重建,文件总是被复制到它们正确的文件夹中。仅当我只是 运行 应用程序时才会失败。

文件的属性在 "Copy always"

...sometimes the code works and there is no problem but other times FileInfo will search the Bin/debug folder from the GUI project and the XSD isnt there.

确保文件属性(在 Visual Studio 中)将 "Copy to Output Directory" 设置为 "copy always" 或 "copy if newer"