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更灵活、扩展性更强:
添加配置文件
在项目中添加appsettings.json文件(右键项目 → 添加 → 新建项 → 搜索「JSON文件」),写入以下内容:{ "AppSettings": { "key": "value" } }右键这个文件 → 属性,设置复制到输出目录为「如果较新则复制」,确保构建时文件会同步到
bin/debug目录。安装必要的NuGet包
通过NuGet包管理器搜索安装以下包:Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.Json
修改代码读取配置
更新你的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,需要手动配置文件的复制规则:
确认NuGet包兼容性
你已经安装了System.Configuration.ConfigurationManager,请确保包版本和你的.NET Core版本匹配(比如.NET Core 3.1对应包的3.x版本)。设置App.config的复制属性
右键项目中的App.config文件 → 属性,设置复制到输出目录为「如果较新则复制」。
构建项目后,App.config会被复制到bin/debug目录,并重命名为你的项目名.dll.config(比如MyConsoleApp.dll.config)。验证代码读取
你的原有代码不需要修改,此时ConfigurationManager.AppSettings["key"]就能正常读到配置值了。
为什么你之前的输出是那样?
因为输出目录里没有对应的.config文件,ConfigurationManager找不到你的自定义配置,所以AppSettings集合是空的;而你看到的那个连接字符串是.NET Core环境中ConfigurationManager默认加载的系统级默认连接字符串,并非来自你的配置文件。
内容的提问来源于stack exchange,提问作者Clement Poh




