【问题标题】:Nuget Package Management issue - Unable to update the package in specific projectNuget 包管理问题 - 无法更新特定项目中的包
【发布时间】:2020-05-15 05:58:18
【问题描述】:

在编译 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" />

我在 Packages like 下还有 2 个文件夹

> microsoft.identitymodel.clients.activedirectory
> Microsoft.IdentityModel.Clients.ActiveDirectory.2.29.0

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

【问题讨论】:

    标签: .net msbuild nuget nuget-package-restore


    【解决方案1】:

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

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

    你有两个选择:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多