You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2.0配置对接.NET Framework的ConfigurationManager方案咨询

解决方案:无需修改Project A即可让其读取Project B的配置

完全可以做到!你之前只安装System.Configuration.ConfigurationManager NuGet包没生效,是因为只解决了Project B能调用这个类的问题,但没把.NET Core的配置同步到ConfigurationManager.AppSettings这个静态集合里——而Project A正是从这个集合读取配置的。

下面是具体步骤:

  • 第一步:确保Project B安装正确的NuGet包
    在Project B的NuGet包管理器中安装System.Configuration.ConfigurationManager,选择适配.NET Core 2.0的版本(比如4.7.0,这个版本对.NET Core 2.0支持很好)。

  • 第二步:在Project B启动时同步配置
    打开Project B的Program.cs(或者Startup类的初始化逻辑),在应用启动的最开始,把.NET Core配置系统加载的内容注入到ConfigurationManager.AppSettings中:

    using System.Configuration;
    using Microsoft.Extensions.Configuration;
    using System.IO;
    
    namespace ProjectB
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 加载.NET Core配置(这里以appsettings.json为例)
                var configBuilder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
    
                var config = configBuilder.Build();
    
                // 将配置同步到ConfigurationManager.AppSettings
                foreach (var kvp in config.AsEnumerable())
                {
                    if (!string.IsNullOrWhiteSpace(kvp.Value))
                    {
                        // 存在则覆盖,不存在则添加
                        ConfigurationManager.AppSettings[kvp.Key] = kvp.Value;
                    }
                }
    
                // 现在再调用Project A的代码,它就能读到配置了
                ProjectA.SomeClass.DoSomething();
            }
        }
    }
    
  • 第三步:确保appsettings.json能被读取到
    右键Project B中的appsettings.json文件,设置“复制到输出目录”为如果较新则复制(或者始终复制),这样运行时程序才能找到这个配置文件。

原理说明

Project A运行时是在Project B的进程空间内,它调用ConfigurationManager.AppSettings["key"]读取的是当前进程的静态配置集合。我们通过在Project B启动时把.NET Core配置系统加载的键值对注入到这个集合里,就能让Project A无需修改任何代码,直接读取到这些配置。

另外,如果你更习惯用传统的app.config文件,也可以在Project B中添加一个app.config,在<appSettings>节点下写配置,ConfigurationManager会自动读取这个文件(编译后会生成ProjectB.exe.config),这种方式更接近.NET Framework的配置习惯,同样不需要修改Project A的代码。


内容的提问来源于stack exchange,提问作者JanivZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:41:00