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

.NET Core 2.0多控制台项目共享类库portsettings.json配置文件问题

解决.NET Core 2.0类库共享JSON配置文件的问题

嘿,我来帮你搞定这个共享配置的问题——你有三个并行运行在不同端口的控制台项目,想把端口配置放在共用的PrjCommon类库的portsettings.json里,还遇到了Debug模式下的运行问题对吧?下面是一步步的实操方案,保证能解决你的困扰:

第一步:配置PrjCommon中的portsettings.json文件

  • 在PrjCommon类库中添加portsettings.json文件,写入你的端口配置,示例内容如下:
{
  "ProjectPorts": {
    "PrjA": 5000,
    "PrjB": 5010,
    "PrjC": 5020
  }
}
  • 关键设置:右键这个JSON文件→选择「属性」,将「复制到输出目录」设置为「如果较新则复制」,「生成操作」设置为「内容」。这一步直接决定了Debug运行时配置文件能不能被控制台项目读到,千万别漏掉!

第二步:在PrjCommon中创建配置读取辅助类

我们需要一个统一的工具类来读取配置,这样三个控制台项目就能直接调用。在PrjCommon里新建一个静态类PortSettingsHelper:

using Microsoft.Extensions.Configuration;
using System.IO;

namespace PrjCommon
{
    public static class PortSettingsHelper
    {
        private static readonly IConfiguration _config;

        static PortSettingsHelper()
        {
            // 构建配置对象,指向当前运行目录的portsettings.json
            var configBuilder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("portsettings.json", optional: false, reloadOnChange: true);

            _config = configBuilder.Build();
        }

        // 根据项目名称获取对应端口
        public static int GetProjectPort(string projectName)
        {
            return _config.GetValue<int>($"ProjectPorts:{projectName}");
        }
    }
}

这里Directory.GetCurrentDirectory()在Debug模式下会指向控制台项目的输出目录(比如PrjA\bin\Debug\netcoreapp2.0),只要配置文件复制到这里,就能正常读取。

第三步:在控制台项目中使用共享配置

以PrjA为例,在Program.cs里直接调用辅助类获取端口:

using PrjCommon;
using System;

namespace PrjA
{
    class Program
    {
        static void Main(string[] args)
        {
            int port = PortSettingsHelper.GetProjectPort("PrjA");
            Console.WriteLine($"PrjA 启动,监听端口:{port}");
            // 这里添加你的服务启动逻辑,比如Kestrel监听该端口
        }
    }
}

PrjB和PrjC的用法完全一致,只需要把参数改成对应的项目名称即可。

Debug模式下的常见问题排查

如果你在Debug运行时遇到找不到配置文件的问题,可以按以下步骤检查:

  • 确认PrjCommon的portsettings.json属性设置正确,特别是「复制到输出目录」有没有设对;
  • 手动查看控制台项目的输出目录(比如PrjA\bin\Debug\netcoreapp2.0),确认里面存在portsettings.json文件;
  • 尝试清理整个解决方案(右键解决方案→清理),然后重新生成所有项目,确保配置文件被正确复制;
  • 因为三个项目并行运行,各自的输出目录是独立的,但PrjCommon编译后会自动把配置文件复制到每个控制台项目的输出目录,所以不用担心互相影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:16:33