You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6.0 WinForm程序如何将NLog.config嵌入单文件EXE?

将NLog.Config嵌入.NET 6单文件WinForm程序的解决方案

步骤1:配置NLog.config的嵌入属性

  • 在Visual Studio中找到项目里的NLog.config文件,右键选择属性
  • 将生成操作修改为嵌入的资源
  • 将复制到输出目录修改为不复制

步骤2:在程序启动时加载嵌入的配置

在Program.cs的Main方法开头(或程序初始化的最早阶段)添加以下代码,从嵌入资源中读取并加载NLog配置:

using NLog;
using NLog.Config;
using System.Reflection;

// 获取当前程序集
var currentAssembly = Assembly.GetExecutingAssembly();
// 替换为你的项目命名空间+NLog.config,例如项目根命名空间是MyWinApp,则路径为MyWinApp.NLog.config
var configResourcePath = "YourProjectNamespace.NLog.config";

using var configStream = currentAssembly.GetManifestResourceStream(configResourcePath);
if (configStream != null)
{
    var loggingConfig = new XmlLoggingConfiguration(configStream, null);
    LogManager.Configuration = loggingConfig;
}

// 初始化日志实例并验证
var logger = LogManager.GetCurrentClassLogger();
logger.Info("NLog配置已从嵌入资源加载完成");

提示:项目根命名空间可在项目属性→应用程序标签页中查看。

步骤3:适配单文件发布设置

在项目的.csproj文件中添加以下配置,确保嵌入资源在单文件发布时能被正确读取:

<PropertyGroup>
    <PublishSingleFile>true</PublishSingleFile>
    <SelfContained>true</SelfContained> <!-- 若为非自包含发布,设为false即可 -->
    <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
</PropertyGroup>

注意事项

  • 注释掉代码中原本自动加载外部NLog.config的逻辑(例如默认的LogManager.LoadConfiguration()),避免冲突
  • 发布后可删除输出目录中的NLog.config文件,验证日志功能是否正常运行
  • 嵌入配置后,如需修改日志规则需重新编译发布程序,无法通过外部文件调整

内容的提问来源于stack exchange,提问作者Steven Sheeley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:21:16