.NET Core 6+可通过Microsoft.Extensions.Configuration.Xml包支持XML配置,需用AddXmlFile加载,根节点必须为,配置项以冒号分隔路径表示,不支持属性值和复杂嵌套。

在 .NET Core 中,XML 配置文件不是默认支持的格式(默认是 JSON),但可以通过自定义 IConfigurationProvider 或使用第三方库来读取 XML 配置。官方 SDK 不直接内置 XML 配置源,但你可以轻松扩展。
添加 XML 配置支持(推荐方式)
.NET Core 6+ 支持通过 AddXmlFile 扩展方法加载 XML 配置,前提是引入 Microsoft.Extensions.Configuration.Xml 包:
- 在项目中安装 NuGet 包:
Microsoft.Extensions.Configuration.Xml - 在
Program.cs中注册 XML 配置源(顺序影响覆盖逻辑):
var builder = WebApplication.CreateBuilder(args);
// 加载 appsettings.xml(需放在项目根目录,设为“复制到输出目录”)
builder.Configuration.AddXmlFile("appsettings.xml", optional: true, reloadOnChange: true);
// 或指定完整路径
// builder.Configuration.AddXmlFile("config/app.config.xml", optional: false);
XML 配置文件格式要求
.NET Core 的 XML 配置解析器要求结构扁平、层级清晰,不支持复杂嵌套或属性混合写法。推荐用以下格式:
Server=localhost;Database=MyApp;Trusted_Connection=true Information Warning true false
注意:根节点必须是 ;每个配置项用层级路径表示(如 FeatureFlags:EnableCaching);不支持 XML 属性作为配置值(例如 不会被识别)。
在代码中读取 XML 配置值
和读取 JSON 配置完全一致,使用 IConfiguration 接口即可:
- 注入
IConfiguration到服务或控制器中 - 用索引器或
GetSection()获取节点 - 用
GetValue或绑定 POCO 类()
// 读取单个值 string connStr = configuration["ConnectionStrings:DefaultConnection"]; // 读取布尔值 bool enableCache = configuration.GetValue("FeatureFlags:EnableCaching"); // 绑定到类 var features = configuration.GetSection("FeatureFlags").Get ();
常见问题与注意事项
XML 配置虽可用,但实践中要注意几个关键点:
- XML 文件需设置“复制到输出目录”属性(
CopyToOutputDirectory),否则运行时找不到 - 多个配置源(如 JSON + XML)同时存在时,后添加的源会覆盖前面同名键的值
- XML 不支持数组语法(如
),建议改用 JSON 或用冒号分隔的键名模拟(如https://a.com https://b.com Urls:0,Urls:1) - 如果需要更灵活的 XML 解析(如带属性、命名空间、复杂结构),建议用
System.Xml.Linq手动解析,再映射到配置模型,而非依赖配置系统










