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

Visual Studio停止模式与调试模式使用不同NuGet包的问题

Visual Studio停止模式与运行模式NuGet版本不一致的原因与解决办法

核心原因

这种差异本质是Visual Studio的编辑时IntelliSense逻辑和构建/运行时NuGet解析逻辑是两套独立机制:

  • IntelliSense(编辑、转到定义、代码提示阶段)不会严格遵循NuGet的依赖合并规则,它可能优先读取单个项目的依赖声明、本地NuGet缓存中先找到的版本,或者间接依赖里的旧版本元数据,没同步整个解决方案的最终依赖解析结果。比如你的场景里,某个间接依赖引用了1.7.0,IntelliSense就直接加载了这个版本的代码元数据,忽略了堂兄弟依赖合并后应该用的1.9.0。
  • 构建和运行时会严格执行NuGet的依赖解析规则,同时应用app.config/web.config里的程序集绑定重定向,把所有版本统一到最终确定的1.9.0,所以运行时能加载正确版本。

解决办法

  • 直接指定依赖版本:在主项目(MyApp)的项目文件中,直接添加PnP.Core 1.9.0作为依赖,强制IntelliSense加载这个版本的元数据,避免它读取间接依赖的旧版本。
  • 清理NuGet缓存并重新还原:运行命令dotnet nuget locals all --clear清理本地缓存,再执行dotnet restore重新拉取并解析整个解决方案的依赖,重启Visual Studio后让IntelliSense重新加载。
  • 检查绑定重定向配置:确认app.config里存在指向1.9.0的绑定重定向配置,示例如下:
    <dependentAssembly>
      <assemblyIdentity name="PnP.Core" publicKeyToken="xxx" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" />
    </dependentAssembly>
    
  • 重新加载解决方案:关闭当前解决方案后重新打开,触发IntelliSense重新解析整个解决方案的依赖图,替换之前缓存的旧版本信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:04:56