C# 中可将 XML 设为嵌入资源打包进程序集,需设“生成操作”为 Embedded Resource、“复制到输出目录”为“从不复制”,运行时用 Assembly.GetExecutingAssembly().GetManifestResourceStream()配合资源名(格式:根命名空间。 文件夹。 文件名。xml)读取,资源只读且名称区分大小写。

在 C# 中,可以把 XML 文件作为嵌入资源(Embedded Resource)添加到程序集中,这样编译后 XML 内容会直接打包进 DLL 或 EXE,无需外部文件依赖。
设置 XML 文件为嵌入资源
在 Visual Studio 中,右键项目中的 XML 文件 → 选择“属性”→ 将“生成操作(Build Action)”改为 Embedded Resource。确保“复制到输出目录”设为“从不复制”,避免同时生成外部副本造成混淆。
获取嵌入的 XML 内容
运行时通过 Assembly.GetExecutingAssembly().GetManifestResourceStream() 获取流,再读取为字符串或加载为 XDocument/XmlDocument:
- 资源名称默认是“根命名空间。 文件夹名。 文件名。xml”,例如项目默认命名空间是
MyApp,XML 放在Dataconfig.xml,则资源名为MyApp.Data.config.xml - 可用
Assembly.GetExecutingAssembly().GetManifestResourceNames()列出所有嵌入资源名,调试时快速确认准确名称 - 推荐用
using var stream = ……; using var reader = new StreamReader(stream); var xmlText = reader.ReadToEnd();安全读取
加载为 XDocument 示例
代码片段(假设资源名为 MyApp.Config.xml):
var assembly = Assembly.GetExecutingAssembly(); using var stream = assembly.GetManifestResourceStream("MyApp.Config.xml"); if (stream != null) {var doc = XDocument.Load(stream); // 后续解析使用 doc.Root 等 }
注意事项
嵌入资源是只读的,不能修改;若需动态配置,应改用 配置文件 或数据库。另外,资源名区分大小写,路径分隔符统一用英文点号(.),不是反斜杠()或正斜杠(/)。
基本上就这些,不复杂但容易忽略资源名拼写和命名空间匹配。






























