使用 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"
我目前正在使用 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"