首页 > 解决方案 > aspnet 核心 appsettings.json 加载

问题描述

我有 ASP.NET Core (2.1) 项目,该项目具有appsettings.json. 我用WebHost.CreateDefaultBuilder(). 该appsettings.json文件在文件属性中具有以下配置:

构建操作:内容
复制到输出目录:不要复制

在构建appsettings.json结束后bin\Debug\netcoreapp2.1\MyProj.runtimeconfig.json。ASP.NET Core 运行时可以很好地加载它。

我创建了 WebJobs(用于 .Net Core 2.1)并想做同样的事情 - 将 Build Action 设置为 Content 并让它加载。在Main()Program.cs 我有类似的代码

var builder = new HostBuilder()
  ...
.ConfigureAppConfiguration(b =>
{
    var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

    b.SetBasePath(Directory.GetCurrentDirectory());
    b.AddJsonFile("appsettings.json", false, true);
    b.AddJsonFile($"appsettings.{environment}.json", true, true);
    b.AddEnvironmentVariables();

    // Adding command line as a configuration source
    if (args != null)
    {
        b.AddCommandLine(args);
    }
}

但是运行时会尝试加载appsettings.json(而不是MyWebJobProj.runtimeconfig.json)。所以我不得不将 Build Action 设置为 None 并将 Copy to Output Directory 设置为 Always。但是,我更喜欢与 ASP.NET Core 中相同的方法——它以某种方式处理文件名转换。尽管 inWebHost.CreateDefaultBuilder()与我的 WebJob 中的代码基本相同。配置中的神奇文件名转换是什么以及为什么它只适用于一种类型的项目?

标签: .net-coreasp.net-core-2.1appsettings

解决方案


该文件[ProjName].runtimeconfig.json的含义与appsettings.json. 确保appsettings.json已复制到输出(将“复制到输出”设置为“始终”或“更新”)。


推荐阅读