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

为何NLog会忽略项目目录下的NLog.config文件?

解决NLog.Config NuGet包自动导入配置文件无法替换的问题

我之前也碰到过一模一样的情况,NLog.Config这个NuGet包会通过自动生成的props文件(就是你看到的obj\MyProject.csproj.nuget.g.props)把它自带的NLog.config硬绑定到项目里,不仅删不掉链接,自己新建的配置文件还会被忽略。下面是几个亲测有效的解决办法:

方法一:修改项目文件禁用自动导入

  1. 右键你的.NET Core项目,选择编辑项目文件(Edit Project File)
  2. 在<PropertyGroup>节点里添加一行配置,直接阻止NuGet自动导入NLog.Config的配置文件:
    <NLogConfigImported>false</NLogConfigImported>
    
  3. 保存项目文件后,右键项目选择卸载项目再重新加载项目
  4. 这时候你就能删掉那个指向NuGet目录的NLog.config链接了,接着把你自己创建的NLog.config设置正确属性:右键文件→属性→生成操作选「内容」,复制到输出目录选「如果较新则复制」

方法二:卸载NLog.Config包,手动管理配置

这个方法更简单直接:

  • 在NuGet包管理器里,先卸载NLog.Config和NLog包
  • 只重新安装NLog包(不要装NLog.Config)
  • 把你自己创建的NLog.config添加到项目里,设置好生成操作和复制属性(同上一步)
  • 清理项目的bin和obj目录,然后重新构建

方法三:强制指定自定义配置文件的优先级

如果你不想卸载包,也可以在项目文件里明确声明你的自定义配置文件,覆盖NuGet的自动导入:
在项目文件里添加以下内容:

<Content Include="NLog.config">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

然后执行清理解决方案(Clean Solution),再重新构建项目,这样你的自定义配置文件就会被优先使用。

额外注意事项

  • 不管用哪种方法,都建议先清理项目的bin和obj目录,避免残留的旧配置文件干扰
  • 一定要确认你的自定义NLog.config属性设置正确,否则构建时还是不会被复制到输出目录

内容的提问来源于stack exchange,提问作者Baurzhan Toishi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:15:27