在我的项目中,我有2个文件是使用C#脚本加载的,但是从项目根文件夹以外的任何地方运行该项目时,都会得到System.IO.FileNotFoundException
。
例如,如果我在终端的项目根目录中并且运行dotnet run
,则该程序将正常运行,但是如果我使用dotnet run -p (path to .csproj)
从项目根目录外部运行,则会得到例外。
这些是用于加载文件的代码段:
_shader = new Shader("shader.vert", "shader.frag");
-
public Shader(string vertPath, string fragPath)
{
var shaderSource = LoadSource(vertPath);
...
}
-
private static string LoadSource(string path)
{
using (var sr = new StreamReader(path, Encoding.UTF8))
{
return sr.ReadToEnd();
}
}
答案 0 :(得分:1)
听起来像在current directory中搜索那些文件。
您有两个选择:
在程序启动时设置当前目录
Environment.CurrentDirectory =
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
使用绝对路径
var folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
_shader = new Shader(folder + "\shader.vert", folder + "\shader.frag");