我突然开始收到此错误:
错误CS1705:身份为“Microsoft.AspNetCore.Http,Version=7.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”的程序集“Microsoft.AspNetCore.Http”使用“Microsoft.AspNetCore.Http.Features,Version=7.0.0.0” ,Culture=neutral,PublicKeyToken=adb9793829ddae60',其版本高于引用的程序集“Microsoft.AspNetCore.Http.Features”,标识为“Microsoft.AspNetCore.Http.Features,Version=2.2.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60” '
所以,MSBuild 似乎在抱怨
Microsoft.AspNetCore.Http' with identity 'Microsoft.AspNetCore.Http, Version=7.0.0.0
但该包甚至没有版本 7.0.0.0(nuget.org 上可用的最新版本是 2.2.0)。
背景是我正在构建一个支持大多数平台的库套件,并且还应该向后兼容 .NET 标准 2.0,因此我的大多数 nuget 都可以针对多个 .Net 版本(netstandard2.0 --> net7)。
此类错误的问题是 MSBuild 没有提供任何有关问题存在的提示,例如哪个包导致了问题。现在有没有可用的工具可以帮助解决这些类型的 dll-hell 情况?我花了很多时间试图解密这个错误,但到目前为止还没有成功。
一旦我找到了麻烦的项目,我就在 .csproj 文件中找到了这个,由 Rider 自动添加:
<ItemGroup>
<Reference Include="Microsoft.AspNetCore.Http">
<HintPath>C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\7.0.14\Microsoft.AspNetCore.Http.dll</HintPath>
</Reference>
</ItemGroup>
我尝试对此进行评论,只是添加了一个普通的包引用,而不是添加到其
PackageReference
中的其他
ItemGroup
项目:<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
这显然为 MSBuild 提供了所需的确切信息。
我猜使用过于强大的工具的危险......