.NET Core 如何使用 ConfigurationManager.AppSettings 调用标准 .NET 库?

7
我有一个标准的.NET 4.5.2库,已经使用了多年。它依赖于ConfigurationManager.AppSettings,这意味着我必须确保一定的设置在我的应用程序或web.config文件的appSettings部分中。没有办法传递这些值。你必须将它们放在appSettings部分中。
我正在启动一个新的.NET Core项目,但是目标仍然是Net452,以便我可以利用许多库(到目前为止都运行良好)。
这个最新的库让我遇到了问题,因为我无法弄清楚如何正确设置设置,以便ConfigurationManager.AppSettings能够找到它们。将它们放在appSettings.json中似乎不起作用。将它们放在web.config中也不起作用。
这个有可能实现吗?
谢谢!
1个回答

6

是的,你想要的是可能的,但需要手动完成(我不知道是否有简单的方法)。

假设您在appsettings.json中拥有如下设置:

{
    "AppSettings" : {
        "Setting1": "Setting1 Value"
     }
}

Startup.cs 的构造函数中,将 ConfigurationManager.AppSettings 设置为以下值:
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();

        // copy appsetting data into ConfigurationManager.AppSettings
        var appSettings = Configuration.GetSection("AppSettings").GetChildren();
        foreach (var setting in appSettings.AsEnumerable())
        {
            ConfigurationManager.AppSettings[setting.Key] = setting.Value;
        }
    }

在类库中获取值:

var conStr =  ConfigurationManager.AppSettings["Setting1"].ToString();

2
谢谢这个提示!还有一件需要注意的事情是,您需要在project.json中依赖System.Configuration.Abstractions,以便可以引入System.Configuration命名空间,以便它可以找到ConfigurationManager类。但是它的工作效果非常好! - retsvek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接