【发布时间】:2019-11-15 05:35:25
【问题描述】:
当您从 Visual Studio (2017) 启动 ASP.NET Core 项目时,它假定工作目录是源代码所在的位置,而不是构建文件的实际放置位置。
这意味着当我运行我的项目时,它会从C:\Path\To\My\Project\appsettings.json 读取配置文件,而不是从C:\Path\To\My\Project\bin\Debug\appsettings.json。
我在调试这段代码的时候可以看到是这样的:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((context, config) => {
config.SetBasePath(context.HostingEnvironment.ContentRootPath);
config.AddJsonFile("appsettings.json", true, false);
});
ContentRootPath 指向项目文件夹的位置,而不是构建文件所在的位置。
我可以通过在Project Properties > Debug 中设置Working Directory 来解决这个问题,但是由于我们也在使用配置转换(SlowCheetah),每个开发人员都将拥有自己的调试输出构建配置(bin\Debug[CustomConfiguration]),并为一位开发人员更改 .csproj 会破坏所有其他开发人员。
有没有什么方法可以让 ASP.NET Core 从放置构建文件的位置而不是项目文件夹中读取配置文件,而无需更改 Working Directory,但仍然适用于多个“构建配置”?
【问题讨论】:
-
微软就是这样设计的,blog.lextudio.com/…
-
@LexLi 是的,很明显。如何规避这个问题以便使用 SlowCheetah 变换?
-
让SlowCheetah 开发人员更改他们的代码以适应这样的设计。
标签: c# asp.net-core visual-studio-2017 appsettings slowcheetah