-1

在我的项目中,我有 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();
    }
}
4

1 回答 1

1

听起来它正在搜索当前目录中的那些文件。

你有两个选择:

  1. 程序启动时设置当前目录

    Environment.CurrentDirectory = 
    Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    
  2. 使用绝对路径

    var folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    _shader = new Shader(folder + "\shader.vert", folder + "\shader.frag");
    
于 2019-06-26T02:19:04.443 回答