Asp.net core appsettings.json和使用ConfigurationManager.appsettings的类库

Asp.net core appsettings.json和使用ConfigurationManager.appsettings的类库,asp.net-core,configuration,configurationmanager,Asp.net Core,Configuration,Configurationmanager,我正在将现有的ASP.NET MVC应用程序迁移到ASP.NET Core。该解决方案有几个类库(提供数据访问、服务等)。许多类库使用静态ConfigurationManager.AppSettings[“…”]方式从web.config文件获取配置 但是,在ASP.NET核心应用程序中,没有web.config文件,并且它显示为ConfigurationManager无法读取appsettings.json 我真的很喜欢ASP.NET核心中的新配置系统,并且正在web应用程序中使用它 但是,有

我正在将现有的ASP.NET MVC应用程序迁移到ASP.NET Core。该解决方案有几个类库(提供数据访问、服务等)。许多类库使用静态
ConfigurationManager.AppSettings[“…”]
方式从web.config文件获取配置

但是,在ASP.NET核心应用程序中,没有web.config文件,并且它显示为
ConfigurationManager
无法读取appsettings.json

我真的很喜欢ASP.NET核心中的新配置系统,并且正在web应用程序中使用它


但是,有没有一种“简单”的方法可以迁移这些类库而不必重写它们以使用新的配置系统呢?是否对读取AppSettings.json的静态
ConfigurationManager.AppSettings[“…”]
调用进行了基本替换?(注意:我们最终会重写它们,但我们更愿意一次编写一个)

免责声明:我没有在类库中尝试过这一点,但这在LinqPad中有效:

void Main()
{
var config=new Microsoft.Extensions.Configuration.ConfigurationBuilder()
.AddInMemoryCollection(新词典)
{
[“测试”]=“测试”,
[“test2:test”]=“test2”
})
.Build();
foreach(config.AsEnumerable()中的变量对)
{
//跳过(test2=null)对
if(pair.Value!=null)
{
ConfigurationManager.AppSettings.Set(pair.Key,pair.Value);
}
}
ConfigurationManager.AppSettings[“测试”].Dump();
ConfigurationManager.AppSettings[“test2:test”].Dump();
}
您可以在初始化代码中添加类似的内容。
它设置System.Configuration app setting集合可用的所有值。

如果您使用的是.NET Standard 2.0,则可以添加对
System.Configuration.ConfigurationManager
NuGet软件包的引用以访问appSettings


您可以将
app.Config
文件(而不是
web.Config
)添加到ASP.NET核心项目以存储appSettings。在项目构建期间,这将被复制到输出文件夹并重命名为
AppName.dll.config

只是确认一下,您是说我需要同时执行这两项操作,对吗?仅仅使用NuGet包似乎无法读取appsettings.json文件。是的,您需要同时读取这两个文件。NuGet包读取XML应用程序配置文件(项目中的app.Config,生成后的appName.dll.Config)。它不使用appsettings.json。