我有一个具有以下配置的ASP.NET核心应用程序:
public Startup(IHostingEnvironment hostingEnvironment)
{
_configuration = new ConfigurationBuilder()
.SetBasePath(hostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", true)
.AddEnvironmentVariables()
.Build();
}
当我发布应用程序并使用应用程序目录中的
dotnet MyApp.dll
运行它时,它运行没有问题。当我执行命令dotnet /dir1/dir2/MyApp.dll
时,它无法加载appsettings.json文件。我做了一些挖掘,发现ContentRootPath
设置为我正在从中运行dotnet
命令的目录,而不是应用程序的实际目录。谁能告诉我如何解决此问题? 最佳答案
我也有同样的问题。我经常将代码存储在包含多个项目的/src文件夹中。因此,从CLI,我想执行以下操作:
cd /c/code/repo
dotnet restore /src/solution.sln
dotnet build /src/solution.sln
dotnet run /src/project/project.csproj
前2个没有问题,但是.NET Core 2.0的CLI不能将.SetBasePath(env.ContentRootPath)识别为将项目构建到的路径。而是使用CLI上的当前路径。
结果是:
Unhandled Exception: System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\code\repo\appsettings.json'.
我可以使它正常工作的唯一方法是进入该目录:
cd /src/project
dotnet run project.csproj
很好,但是如果我想重建解决方案,则需要导航回.sln所在的/src,这很烦人。
似乎是CLI中的错误。
关于c# - ASPNET Core : Wrong Value for ContentRootPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41934783/