从 Visual Studio 启动 ASP.NET Core 不会从构建文件夹启动

GTH*_*ten 7 c# appsettings slowcheetah asp.net-core visual-studio-2017

当您从 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);
    });
Run Code Online (Sandbox Code Playgroud)

其中ContentRootPath指向项目文件夹,而不是放置构建文件的位置。

我可能可以通过设置Working Directoryin来解决这个问题Project Properties > Debug,但是由于我们还使用配置转换(SlowCheetah),每个开发人员都将拥有自己的调试输出构建配置(bin\Debug[CustomConfiguration]),并且.csproj对一个开发人员进行更改会破坏所有其他开发人员的配置。

有没有什么方法可以让 ASP.NET Core 从构建文件所在的位置而不是项目文件夹中读取配置文件,而无需更改Working Directory,但仍然适用于多个“构建配置”?

小智 0

也许这将有助于通过以下方式将目录设置为应用程序工作目录:

Directory.SetCurrentDirectory(context.HostingEnvironment.ContentRootPath);
Run Code Online (Sandbox Code Playgroud)

  • “appsettings.json”已复制到“bin”目录。问题是,在 Visual Studio 中执行“调试 &gt; 开始调试”时,它不是从“bin”目录启动,而是从项目目录启动,因此找不到转换后的文件。 (5认同)