无法读取dotnet核心中链接的appsettings.json文件的值
在aspnetcore 2.0项目中,我试图在我的Web应用程序和我的几个xunit测试项目中设置一个共享的appsettings.json文件。
首先,当我将appsettings.json“定期”添加到我的项目中时,一切正常。 但是,当我尝试从其他路径添加单个引用/链接文件时,在运行时期间不会读取这些值。
要设置它,为每个项目我将链接文件添加到.csproj:
appsettings.json Always
在每个构建中,我可以validation它是否输出到/bin/Debug/netcoreapp2.0
目录:
问题是,当通过我的webapi的默认启动或在测试中读取它时,设置值始终为null。 我正在使用强类型配置。 在webapi项目中,我正在使用带有aspnetcore 2.0约定的WebHost.CreateDefaultBuilder() (在引擎盖上查看hostingEnvironment.EnvironmentName
,dotPeek告诉我)。
但是在测试项目的情况下,也会发生同样的情况。 在我的全局测试夹具中,以下示例可以解释所有这些:
var builder = new ConfigurationBuilder() // .SetBasePath(???) .AddJsonFile("appsettings.json"); var configuration = builder.Build(); var settings = new FooSettings(); configuration.GetSection("FooSettings").Bind(settings); if (settings == null) throw new Exception("Could not find or parse 'appsettings.json'"); // The problem: always fails on this check if (string.IsNullOrEmpty(settings.Bar)) throw new Exception("Could not find or parse 'FooSettings'");
在上面的示例中的最后一行注释了该问题。 再次,当我直接将appsettings.json文件添加到项目根目录时,它完美地工作,而不是将其添加为共享文件夹的链接引用。 我假设我必须以不同方式更改.csproj配置或使用不同的.SetBasePath(???)
。 但对于我来说,我正在努力实现它。
问题:如何在所有项目中正确读取链接的 appsettings文件?
NB我发现了其他几个post,但找不到任何匹配的答案,特别是dotnetcore。
- Newtonsoft.JSON v9.01 + FileNotFoundException(.NET核心类库)
- Azure Fluent API创建SQL Server时出错 – 缺少x-ms-request-id标头
- 在点网核心中使用外部.dll
- .NET Core 2.0模块化dependency injection
- 如何在Entity Framework Core 2中播种?
- 只有1个Main方法的XUnit测试项目:“程序定义了多个入口点。”
- 如何让.NET Core项目复制NuGet引用来构建输出?
- 找不到Microsoft.AspNetCore.Antiforgery
- CS0433:两者中都存在“List ”类型