如何将C#项目打包为嵌入app.config的单文件可执行程序?
将app.config嵌入到单个C#可执行文件的实现方法
1. 将app.config设置为嵌入资源
- 在Visual Studio中选中项目里的
app.config文件,右键打开属性面板 - 将生成操作修改为
嵌入的资源
2. 修改代码读取嵌入的配置内容
原代码依赖外部配置文件,需改为读取程序集内的嵌入资源,示例代码如下:
using System.Reflection; using System.Xml; // 获取当前运行的程序集 var currentAssembly = Assembly.GetExecutingAssembly(); // 资源名称格式为「项目命名空间.app.config」,请替换为你的实际命名空间 string embeddedConfigName = "YourProjectNamespace.app.config"; // 读取嵌入的配置文件流 using (Stream configStream = currentAssembly.GetManifestResourceStream(embeddedConfigName)) { if (configStream == null) throw new InvalidOperationException($"未找到嵌入的配置文件:{embeddedConfigName}"); XmlDocument configDoc = new XmlDocument(); configDoc.Load(configStream); // 读取appSettings中的配置项A XmlNode appSettings = configDoc.SelectSingleNode("/configuration/appSettings"); XmlNode configItem = appSettings?.SelectSingleNode("add[@key='A']"); string aValue = configItem?.Attributes["value"]?.Value; // 后续可使用读取到的aValue }
3. 编译生成单个可执行文件
- .NET Core/.NET 5+项目:
右键项目 → 选择发布 → 发布目标选文件夹 → 在发布设置中勾选生成单个文件,完成发布即可得到单个exe文件 - .NET Framework项目:
可使用ILMerge工具合并输出文件,或使用第三方打包工具;结合上述嵌入资源的方式,确保编译时仅输出exe即可实现单文件分发
内容的提问来源于stack exchange,提问作者dinikai
相关产品推荐
相关产品推荐

