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

ClickOnce发布时未推送更新后的NuGet包版本问题求助

问题排查与解决方案

旧版本文件的常见来源

  • 主项目(MainAppProject)仅通过类库(LibraryProject)间接引用NLog,MSBuild的依赖解析规则在存在版本歧义时优先拉取了显式声明的旧版本
  • 项目配置文件(App.config/Web.config)中存在写死的旧版本绑定重定向规则,强制使用了4.7.10版本
  • 发布目标目录未开启发布前清空逻辑,旧版本文件残留未被覆盖
  • 系统全局程序集缓存(GAC)中安装了旧版NLog,发布时优先级高于本地NuGet源的包
  • 发布配置文件存在历史缓存,或者根目录的Directory.Build.props等全局配置文件中强制指定了NLog的旧版本号
  • 主项目中存在手动添加的旧版NLog本地dll引用,优先级高于类库传递的NuGet引用

需要检查的遗漏配置

  • 直接在主项目中安装和类库同版本的NLog NuGet包,消除间接依赖的版本解析歧义
  • 打开所有项目的App.config/Web.config文件,找到NLog对应的<dependentAssembly>节点,要么将newVersion属性改为你使用的5.0.0-preview.1,要么直接删除该节点让VS自动生成正确的绑定重定向
  • 打开发布配置的「设置」页,在「文件发布选项」下勾选「删除目标目录中的现有文件」,避免旧文件残留
  • 检查两个项目的NLog引用路径,确认均指向C:\Users\dev\.nuget\packages\nlog\5.0.0-preview.1\路径下的dll,没有手动引用其他位置的旧版dll
  • 若你使用packages.config管理NuGet包,建议迁移到PackageReference格式,packages.config的依赖解析逻辑更容易出现版本漂移问题
  • 删除Properties\PublishProfiles目录下的旧发布配置文件,重新创建新的发布配置,排除旧配置的缓存影响

调试方法与详细构建日志开启步骤

你可以通过开启诊断级构建日志,精准定位旧版本文件的复制来源,操作如下:

  1. 打开Visual Studio顶部菜单栏的「工具」→「选项」
  2. 找到「项目和解决方案」→「生成并运行」分类
  3. 将「MSBuild项目生成输出详细程度」的两个下拉选项,都修改为「诊断」(该级别日志信息最完整)
  4. 保存设置后重新触发发布操作
  5. 在输出窗口的构建日志中搜索NLog.dll,找到「复制文件到发布目录」对应的步骤,查看该步骤的来源路径,即可明确旧版本文件的实际来源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:12:02