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

.NET是否可优先使用项目引用而非NuGet依赖包?

让.NET/Visual Studio优先使用Package B的项目引用版本的解决方案

方法1:本地开发替换为项目引用

如果是本地调试阶段,直接把Package A的NuGet引用换成项目引用:

  • 卸载项目里的Package A NuGet包,右键项目 → 添加 → 项目引用,选择本地拉取的Package A代码项目。
  • 这种方式下,整个解决方案的依赖链会直接使用你本地的Package B项目,完全跳过NuGet的版本解析逻辑,从根源避免冲突。

方法2:在.csproj中强制指定Package B版本

在使用Package A的项目的.csproj文件里,直接锁定Package B的版本,让NuGet优先使用你指定的版本(即项目引用对应的版本):

<ItemGroup>
  <!-- 替换x.y.z为你当前Package B的版本 -->
  <PackageReference Include="PackageB" Version="x.y.z" PrivateAssets="all" />
</ItemGroup>

PrivateAssets="all"用于避免将该版本传递给其他依赖,同时确保项目引用的Package B被优先加载。

方法3:.NET Framework使用绑定重定向

如果是.NET Framework项目,通过配置绑定重定向强制CLR加载指定版本的Package B:
在app.config或web.config中添加:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="PackageB" publicKeyToken="你的Package B公钥令牌" culture="neutral" />
      <!-- oldVersion覆盖所有旧版本范围,newVersion设为你当前使用的版本 -->
      <bindingRedirect oldVersion="0.0.0.0-x.y.z" newVersion="x.y.z" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

公钥令牌可以从Package B的程序集属性中获取。

方法4:启用集中包管理(CPM)

用NuGet的集中包管理统一控制版本:
在解决方案根目录创建Directory.Packages.props文件,指定Package B的版本:

<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="PackageB" Version="x.y.z" />
  </ItemGroup>
</Project>

这种方式会让整个解决方案的所有依赖都遵循你指定的Package B版本,忽略Package A自带的旧版依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:22:15