Nuget 包管理问题 - 无法更新特定项目中的包

Nuget Package Management issue - Unable to update the package in specific project

编译 Visual Studio 解决方案时出现以下错误。我的特定项目正在寻找更高版本(3.14.2),但它引用的包是较低版本。如果我尝试从 nuget 包管理器更新,我会收到一个错误,因为另一个项目正在寻找此 dll 的较低版本。

> Severity  Code    Description Project File    Line    Suppression State
> Error NU1605  Detected package downgrade:
> Microsoft.IdentityModel.Clients.ActiveDirectory from 3.14.2 to
> 2.21.301221612. Reference the package directly from the project to select a different version.   TestProj -> TestProj2 0.1.219 ->
> Microsoft.Azure.Services.AppAuthentication 1.1.0-preview ->
> Microsoft.IdentityModel.Clients.ActiveDirectory (>= 3.14.2)   TestProj
> -> TestProj2 0.1.219 -> Microsoft.IdentityModel.Clients.ActiveDirectory (>=
> 2.21.301221612)   Microsoft.Crm.ObjectModel   D:\Services\TestProj.csproj 1

在我的仓库中,shared.props 文件包含这样的内容

<PKG_ACTIVEDIR>$(CxCachePath)\Microsoft.IdentityModel.Clients.ActiveDirectory.2.29.0</PKG_ACTIVEDIR>

Packages.Props 文件包含

<PackageReference Update="Microsoft.IdentityModel.Clients.ActiveDirectory" Version="3.19.8" />

另外,我在

等包下有 2 个文件夹
> microsoft.identitymodel.clients.activedirectory
> Microsoft.IdentityModel.Clients.ActiveDirectory.2.29.0

现在我应该在哪里设置 VersionOverride 来覆盖特定项目的这个版本,它的语法是什么

您所处的情况无法满足项目的所有要求。

忽略 NU1605 警告通常是一种不好的做法(这是一个升级为错误的警告),请参阅 https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1605。 忽略此警告经常会导致运行时错误。您的项目中基本上有一些组件是针对上述包的更高版本编译的。 如果你推送一个较低的版本,你可能会遇到运行时问题。

您有 2 个选择:

  • 解决问题,实际使用您的传递引用所需的更高版本 (3.14.2)。更新你对这个包的所有引用(传递并直接到 3.14.2

  • 通过抑制警告忽略问题。

我认为您在这里不需要版本覆盖,问题不在于指定的引用,而在于传递的引用。