.NET Core使用ConfigurationManager.AppSettings消耗标准.NET库

ret*_*vek 7 .net asp.net-core

我有一个标准的.NET 4.5.2库,我已经使用多年了.它依赖于ConfigurationManager.AppSettings,这意味着我必须确保我的app或web.config文件的appSettings部分中有一组特定的设置.无法传递这些值.您必须将它们放在appSettings部分中.

我正在.NET Core中开始一个新项目,但目标是Net452,这样我就可以利用一些库(到目前为止工作正常).

我遇到了这个最新库的问题,因为我无法弄清楚如何正确设置设置,以便ConfigurationManager.AppSettings可以找到它们.

将它们放在appSettings.json中似乎不起作用.将它们放在web.config中似乎也不起作用.

这甚至可能吗?

谢谢!

ade*_*lin 6

是的,它可能是你想要的,但你应该手动(我不知道是否有一个简单的方法).

假设您有appsettings.json以下设置:

{
    "AppSettings" : {
        "Setting1": "Setting1 Value"
     }
}
Run Code Online (Sandbox Code Playgroud)

在具有值的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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

并在类库中获得价值:

var conStr =  ConfigurationManager.AppSettings["Setting1"].ToString();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的提示!还有一点需要注意的是,您需要依赖System.Configuration.Abstractions(在project.json中),这样您就可以引入System.Configuration命名空间,以便找到ConfigurationManager类.但它就像一个冠军! (2认同)