我有一个具有appsettings.json
的ASP.NET Core(2.1)项目。我使用WebHost.CreateDefaultBuilder()
。 appsettings.json
文件在“文件属性”中具有以下配置:
构建操作:内容
复制到输出目录:不要复制
构建完成后,appsettings.json
会以bin\Debug\netcoreapp2.1\MyProj.runtimeconfig.json
结尾。
ASP.NET Core运行时会很好地加载它。
我创建了WebJobs(针对.Net Core 2.1),并希望执行相同的操作-将“构建操作”设置为“内容”,然后将其加载。在Program.cs的Main()
中,我有
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
)。因此,我必须将“构建操作”设置为“无”,并将“复制到输出目录”设置为“始终”。
但是,我希望使用与ASP.NET Core中相同的方法-它以某种方式处理文件名转换。尽管WebHost.CreateDefaultBuilder()
中的代码基本上与WebJob中的代码相同。魔术文件名转换在配置中有什么作用,为什么它仅在一种类型的项目中起作用?
答案 0 :(得分:1)
文件IS (NOT) NULL
与[ProjName].runtimeconfig.json
的含义完全不同。确保将appsettings.json
复制到输出(将“复制到输出”设置为“总是”或“较新”)。