【问题标题】:.NET Core consuming standard .NET Library using ConfigurationManager.AppSettings.NET Core 使用 ConfigurationManager.AppSettings 使用标准 .NET 库
【发布时间】:2016-09-18 04:29:55
【问题描述】:

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

我在 .NET Core 中开始了一个新项目,但目标是 Net452,以便我可以利用许多库(目前运行良好)。

我在使用这个最新库时遇到了问题,因为我不知道如何正确设置设置以便 ConfigurationManager.AppSettings 找到它们。

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

这可能吗?

谢谢!

【问题讨论】:

    标签: .net asp.net-core


    【解决方案1】:

    是的,这可能是您想要的,但是您应该手动进行(我不知道是否有简单的方法)。

    假设您在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();
    

    【讨论】:

    • 感谢您的提示!需要注意的另一件事是,您需要依赖 System.Configuration.Abstractions(在 project.json 中),以便您可以拉入 System.Configuration 命名空间,以便它可以找到 ConfigurationManager 类。但它就像一个冠军!
    猜你喜欢
    • 2018-03-29
    • 2017-09-18
    • 1970-01-01
    • 2020-11-17
    • 2021-10-09
    • 2018-05-15
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多