在编译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以覆盖特定项目上的该版本,以及该语法是什么
答案 0 :(得分:1)
您处于无法满足项目所有要求的情况。
忽略NU1605警告(这是警告为错误的警告)通常是一种不好的做法,请参见https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1605。 忽略此警告通常会导致运行时错误。本质上,您的项目中具有针对所述软件包的更高版本进行编译的组件。 如果您选择较低的版本,则可能会遇到运行时问题。
您有2个选择:
解决此问题,实际上使用传递引用所需的更高版本(3.14.2)。更新您对该程序包的所有引用(直接传递到3.14.2
通过禁止显示警告来忽略此问题。
我认为您不需要在这里覆盖版本,问题不在于指定的引用,而在于传递的引用。