m20*_*33m 5 .net c# asp.net .net-core
我有一个ASP.NET核心应用程序,具有以下配置:
public Startup(IHostingEnvironment hostingEnvironment)
{
_configuration = new ConfigurationBuilder()
.SetBasePath(hostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", true)
.AddEnvironmentVariables()
.Build();
}
Run Code Online (Sandbox Code Playgroud)
当我发布应用程序并使用dotnet MyApp.dll应用程序目录内部运行它时,它运行没有问题.当我执行该命令时dotnet /dir1/dir2/MyApp.dll,它无法加载appsettings.json文件.我做了一点挖掘,发现它ContentRootPath被设置为我正在运行dotnet命令的目录而不是应用程序的实际目录.谁能告诉我如何解决这个问题?
小智 4
我也有同样的问题。我经常将代码存储在包含多个项目的 /src 文件夹中。因此,我想从 CLI 执行以下操作:
cd /c/code/repo
dotnet restore /src/solution.sln
dotnet build /src/solution.sln
dotnet run /src/project/project.csproj
Run Code Online (Sandbox Code Playgroud)
前两个工作没有问题,但 .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'.
Run Code Online (Sandbox Code Playgroud)
我可以让它工作的唯一方法是进入该目录:
cd /src/project
dotnet run project.csproj
Run Code Online (Sandbox Code Playgroud)
这很好,但如果我想重建解决方案,那么我需要导航回我的 .sln 所在的 /src,这非常烦人。
看起来像是 CLI 中的一个错误。
| 归档时间: |
|
| 查看次数: |
2000 次 |
| 最近记录: |