You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Mac下VS2019社区版C#控制台App.config无法读取配置值怎么办?

问题分析与解决方案

首先,你的问题核心确实和目标框架是.NET Core直接相关——.NET Core/.NET 5+ 彻底重构了配置系统,传统的App.config是.NET Framework时代的产物,Visual Studio在构建.NET Core项目时不会自动处理它的复制与重命名,这就是你在bin/debug目录里找不到ProjectName.config的直接原因,自然也读不到自定义配置值。

下面分两种方案解决:

方案一:使用.NET Core推荐的配置系统(推荐)

这是.NET Core生态的标准配置方式,比传统App.config更灵活、扩展性更强:

  1. 添加配置文件
    在项目中添加appsettings.json文件(右键项目 → 添加 → 新建项 → 搜索「JSON文件」),写入以下内容:

    {
      "AppSettings": {
        "key": "value"
      }
    }
    

    右键这个文件 → 属性,设置复制到输出目录为「如果较新则复制」,确保构建时文件会同步到bin/debug目录。

  2. 安装必要的NuGet包
    通过NuGet包管理器搜索安装以下包:

    • Microsoft.Extensions.Configuration
    • Microsoft.Extensions.Configuration.Json
  3. 修改代码读取配置
    更新你的Program类代码:

    using Microsoft.Extensions.Configuration;
    using System;
    using System.IO;
    
    class Program
    {
        static void Main(string[] args)
        {
            // 构建配置对象
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .Build();
    
            Console.WriteLine("Config");
            // 读取配置值
            var value = config["AppSettings:key"];
            Console.WriteLine(value);
            Console.WriteLine("End Config");
        }
    }
    

    运行后就能正常输出value了。

方案二:强行让传统App.config在.NET Core中生效(不推荐)

如果你坚持要用App.config,需要手动配置文件的复制规则:

  1. 确认NuGet包兼容性
    你已经安装了System.Configuration.ConfigurationManager,请确保包版本和你的.NET Core版本匹配(比如.NET Core 3.1对应包的3.x版本)。

  2. 设置App.config的复制属性
    右键项目中的App.config文件 → 属性,设置复制到输出目录为「如果较新则复制」。
    构建项目后,App.config会被复制到bin/debug目录,并重命名为你的项目名.dll.config(比如MyConsoleApp.dll.config)。

  3. 验证代码读取
    你的原有代码不需要修改,此时ConfigurationManager.AppSettings["key"]就能正常读到配置值了。

为什么你之前的输出是那样?

因为输出目录里没有对应的.config文件,ConfigurationManager找不到你的自定义配置,所以AppSettings集合是空的;而你看到的那个连接字符串是.NET Core环境中ConfigurationManager默认加载的系统级默认连接字符串,并非来自你的配置文件。

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

火山引擎 最新活动