检测到包降级警告(dotnet core,vs 2017)
Detected package downgrade warning (dotnet core, vs 2017)
我刚刚更新了我的解决方案(dotnet core 1.1 项目)的所有 nuget 包。
我现在收到以下警告,但我真的不知道它们是什么意思。
更新: 我仍然收到上述警告。我的网络项目警告 Microsoft.NETCore.App 包(见下面的截图),我的 lib 项目警告 NETStandard.Library(见上面的截图)
尝试在 NuGet 包管理器中更新 Microsoft.NETCore.App 时,出现以下错误:
希望有人能帮助我摆脱这些警告并设置一切,这样我就可以更新我的所有包。
通过从 csproj
文件中删除 <NetStandardImplicitPackageVersion>
元素,我能够摆脱项目中的这些警告。
有一些关于隐式元包的信息in this article,这似乎是这个问题的根本原因。
您可能还需要更新一些依赖项。例如,我不得不将 BenchmarkDotNet
从 0.10.1
升级到 0.10.3
以消除一些警告,就像您看到的那样。
根据上面的回答,可行的解决方案是从您的 csproj 文件中删除以下行。
网络应用程序项目:
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
库项目:
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
在我的例子中,这些属性都没有在我的 csproj 文件中设置。
我不得不告诉 VS 通过 NuGet 更新这些包。
在解决显式引用隐式依赖的警告后,警告出现在我面前。NETCore.App 从 1.0 移动到 1.1 后。
更新 21/09/17
这好像也影响升级到2.0,分辨率是一样的。使用 NuGet 手动更新这些包。感谢 IbrarMumtaz 指出这一点!
我在打开现有解决方案后发生了这种情况,但不是警告,而是错误。
我打开 YourAwesomeApp.csproj 文件并逐一检查 "Detected package downgrade" 错误,然后手动将该行项目的版本从现有版本更改为显示在错误本身。
例如,如果错误显示检测到降级 "SqlServer 1.0.4 -> 1.0.3" 则找到包 SqlServer 的行并将版本从 1.0.3 编辑为 1.0.4。
构建项目后,这些错误应该会消失。
缺点是这次我只有 5 个错误,但如果另一个人的项目包含 50 个这样的错误怎么办。那么那个人手动编辑那些行的任务将是非常繁琐和耗时的。
我能够修复一些错误,比如在 cproj 中添加 NoWarn
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);NU1605</NoWarn>
</PropertyGroup>
...
</Project>
您可能只想在多个包升级期间临时添加它,稍后再将其删除。
我最近才遇到这个问题,更新 NuGet 包对我有用。
从项目中手动删除 nuget 包依赖项并为它们中的每一个安装包解决了我的问题。
尝试使用 NuGet
我得到:
error NU1605: Detected package downgrade: System.Net.NameResolution from 4.3.0 to 4.0.0. Reference the packagedirectly from the project to select a different version.
所以我通过运行(在项目文件夹中)引用了包目录:
dotnet add package System.Net.NameResolution
问题:
A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the "nearest wins" rule when resolving packages, a nearer package in the graph may have overridden a distant package.
解法:
Add a direct reference to the project for the higher version of the package that you want to use.
尝试删除:
<IsPackable>false</IsPackable>
来自您的项目文件 - 这对我有用!
如果您仍然留下 NU1605
错误代码,您可以通过将以下内容添加到您的项目文件来忽略它:
<PropertyGroup>
<NoWarn>NU1605</NoWarn>
</PropertyGroup>
我正在尝试将 Microsoft.AspNetcore.MVC 升级到版本 2+。我的解决方案是首先将所有其他依赖项升级到 2+,然后最后升级 .MVC。
我可以通过下载导致问题的软件包的早期版本来解决问题,这似乎是由于依赖于未安装的 .NET Standard 版本引起的,这也应该通过更新 Visual Studio 来解决.
感谢 ,我解决了这个问题。基本上,只需在 .csproj
文件的 <PropertyGroup>
标签内添加以下行:
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
就我而言,此错误与 .NET Core 无关,而是与 .NET Standard 相关。
我有两个库 A 和 B。库 A 依赖于一些 nuget 包 X,库 B 依赖于 A。一旦我将 X 升级到新版本,不知何故它开始依赖于 [= 的新版本12=](从 2.0.2 到 2.0.3),它破坏了 B 的构建并出现错误 Detected package downgrade: NETStandard.Library from 2.0.3 to 2.0.2. Reference the package directly from the project to select a different version
.
一旦 I added the NETStandard.Library nuget package 作为对 B 的依赖项(显然针对最新版本 2.0.3),即使出现新的警告,错误也会消失:
/usr/local/share/dotnet/sdk/2.1.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(5,5):
Warning NETSDK1023: A PackageReference for 'NETStandard.Library' was
included in your project. This package is implicitly referenced by the
.NET SDK and you do not typically need to reference it from your
project. For more information, see https://aka.ms/sdkimplicitrefs
(NETSDK1023) (GWallet.Frontend.XF)
这通常是因为您尝试安装的项目需要比您已经包含在项目中的子依赖项更新的版本。
解决方案是在安装包之前更新或删除项目中现有的依赖项。
示例:
Detected package downgrade: Newtonsoft.Json from 9.0.0 to 8.0.0.
这意味着您的项目中已将 Newtonsoft.Json 8.0.0 列为依赖项,但您尝试安装的软件包至少需要 9.0 版。 0 作为依赖项。
这是因为 Visual studio 不会自动升级此依赖项,因为您已经为项目指定了明确的版本。您可以将项目中的依赖项升级到所需的最低版本,也可以将其从项目中删除,并让您正在安装的包处理它。
要解决此问题,在我们上面的示例中,这意味着找到 'Newtonsoft.Json 8.0.0' 并将其升级到版本“9.0.0”或只是将其从您的项目中删除在安装你的包之前。
如果您在 netcoreapp3.1
中遇到 Razor
的错误,您只需将项目 SDK 从 Microsoft.NET.Sdk.Razor
更改为 Microsoft.NET.Sdk
。
所以,尝试完全卸载软件包并重新安装。
确保为所有引用它的解决方案项目执行此操作。
然后清理并重建。这对我有用。
我的问题是我在本地安装的软件包版本高于我引用的项目。如果您转到 工具 > NuGet 包管理器 > 包管理器设置 > 常规 > 清除所有 NuGet 缓存 然后重建您的解决方案,它将安装引用的包并且错误将会消失。
我有一个类似的问题,我的项目有这样的包引用:
包参考:
Package A
Package B
Package A
因为项目 B 引用了包 A,所以我刚刚从主包列表中删除了包 A,剩下的包 B 引用了包 A。我重建了解决方案,问题消失了。
对我来说,这是由于引用了一个使用指定版本的 Microsoft.AspNetCore.App 的项目,而我的项目没有:
我的项目:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App"/>
</ItemGroup>
参考项目:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
</ItemGroup>
修复(我的项目):
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
</ItemGroup>
识别检测到的包。例如在我的例子中,它是
System.Diagonistics.DiagonsticSource
从您的项目中查找此程序集引用的位置
(参考 > 属性 > 路径)
复制路径并检查。就我而言,
项目引用的是 4.6.0 但我要引用的程序集
安装需要 5.0.0 的版本
System.Diagonistics.DiagonsticSource 最低
转到管理项目的 NuGet 包并搜索
“System.Diagonistics.DiagonsticSource”和
更新。请记住,这也可能会导致另一个“Detected
包降级”错误(如果出现这种情况,您应该返回到第一步
发生)
现在,安装您最初想要安装的程序集(在我的
如果是 Microsoft.ApplicationInsights)
我刚刚更新了我的解决方案(dotnet core 1.1 项目)的所有 nuget 包。
我现在收到以下警告,但我真的不知道它们是什么意思。
更新: 我仍然收到上述警告。我的网络项目警告 Microsoft.NETCore.App 包(见下面的截图),我的 lib 项目警告 NETStandard.Library(见上面的截图)
尝试在 NuGet 包管理器中更新 Microsoft.NETCore.App 时,出现以下错误:
希望有人能帮助我摆脱这些警告并设置一切,这样我就可以更新我的所有包。
通过从 csproj
文件中删除 <NetStandardImplicitPackageVersion>
元素,我能够摆脱项目中的这些警告。
有一些关于隐式元包的信息in this article,这似乎是这个问题的根本原因。
您可能还需要更新一些依赖项。例如,我不得不将 BenchmarkDotNet
从 0.10.1
升级到 0.10.3
以消除一些警告,就像您看到的那样。
根据上面的回答,可行的解决方案是从您的 csproj 文件中删除以下行。
网络应用程序项目:
<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
库项目:
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
在我的例子中,这些属性都没有在我的 csproj 文件中设置。
我不得不告诉 VS 通过 NuGet 更新这些包。
在解决显式引用隐式依赖的警告后,警告出现在我面前。NETCore.App 从 1.0 移动到 1.1 后。
更新 21/09/17
这好像也影响升级到2.0,分辨率是一样的。使用 NuGet 手动更新这些包。感谢 IbrarMumtaz 指出这一点!
我在打开现有解决方案后发生了这种情况,但不是警告,而是错误。
我打开 YourAwesomeApp.csproj 文件并逐一检查 "Detected package downgrade" 错误,然后手动将该行项目的版本从现有版本更改为显示在错误本身。
例如,如果错误显示检测到降级 "SqlServer 1.0.4 -> 1.0.3" 则找到包 SqlServer 的行并将版本从 1.0.3 编辑为 1.0.4。
构建项目后,这些错误应该会消失。
缺点是这次我只有 5 个错误,但如果另一个人的项目包含 50 个这样的错误怎么办。那么那个人手动编辑那些行的任务将是非常繁琐和耗时的。
我能够修复一些错误,比如在 cproj 中添加 NoWarn
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<NoWarn>$(NoWarn);NU1605</NoWarn>
</PropertyGroup>
...
</Project>
您可能只想在多个包升级期间临时添加它,稍后再将其删除。
我最近才遇到这个问题,更新 NuGet 包对我有用。
从项目中手动删除 nuget 包依赖项并为它们中的每一个安装包解决了我的问题。
尝试使用 NuGet
我得到:
error NU1605: Detected package downgrade: System.Net.NameResolution from 4.3.0 to 4.0.0. Reference the packagedirectly from the project to select a different version.
所以我通过运行(在项目文件夹中)引用了包目录:
dotnet add package System.Net.NameResolution
问题:
A dependency package specified a version constraint on a higher version of a package than restore ultimately resolved. That is, because of the "nearest wins" rule when resolving packages, a nearer package in the graph may have overridden a distant package.
解法:
Add a direct reference to the project for the higher version of the package that you want to use.
尝试删除:
<IsPackable>false</IsPackable>
来自您的项目文件 - 这对我有用!
如果您仍然留下 NU1605
错误代码,您可以通过将以下内容添加到您的项目文件来忽略它:
<PropertyGroup>
<NoWarn>NU1605</NoWarn>
</PropertyGroup>
我正在尝试将 Microsoft.AspNetcore.MVC 升级到版本 2+。我的解决方案是首先将所有其他依赖项升级到 2+,然后最后升级 .MVC。
我可以通过下载导致问题的软件包的早期版本来解决问题,这似乎是由于依赖于未安装的 .NET Standard 版本引起的,这也应该通过更新 Visual Studio 来解决.
感谢 .csproj
文件的 <PropertyGroup>
标签内添加以下行:
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
就我而言,此错误与 .NET Core 无关,而是与 .NET Standard 相关。
我有两个库 A 和 B。库 A 依赖于一些 nuget 包 X,库 B 依赖于 A。一旦我将 X 升级到新版本,不知何故它开始依赖于 [= 的新版本12=](从 2.0.2 到 2.0.3),它破坏了 B 的构建并出现错误 Detected package downgrade: NETStandard.Library from 2.0.3 to 2.0.2. Reference the package directly from the project to select a different version
.
一旦 I added the NETStandard.Library nuget package 作为对 B 的依赖项(显然针对最新版本 2.0.3),即使出现新的警告,错误也会消失:
/usr/local/share/dotnet/sdk/2.1.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(5,5): Warning NETSDK1023: A PackageReference for 'NETStandard.Library' was included in your project. This package is implicitly referenced by the .NET SDK and you do not typically need to reference it from your project. For more information, see https://aka.ms/sdkimplicitrefs (NETSDK1023) (GWallet.Frontend.XF)
这通常是因为您尝试安装的项目需要比您已经包含在项目中的子依赖项更新的版本。
解决方案是在安装包之前更新或删除项目中现有的依赖项。
示例:
Detected package downgrade: Newtonsoft.Json from 9.0.0 to 8.0.0.
这意味着您的项目中已将 Newtonsoft.Json 8.0.0 列为依赖项,但您尝试安装的软件包至少需要 9.0 版。 0 作为依赖项。
这是因为 Visual studio 不会自动升级此依赖项,因为您已经为项目指定了明确的版本。您可以将项目中的依赖项升级到所需的最低版本,也可以将其从项目中删除,并让您正在安装的包处理它。
要解决此问题,在我们上面的示例中,这意味着找到 'Newtonsoft.Json 8.0.0' 并将其升级到版本“9.0.0”或只是将其从您的项目中删除在安装你的包之前。
如果您在 netcoreapp3.1
中遇到 Razor
的错误,您只需将项目 SDK 从 Microsoft.NET.Sdk.Razor
更改为 Microsoft.NET.Sdk
。
所以,尝试完全卸载软件包并重新安装。 确保为所有引用它的解决方案项目执行此操作。 然后清理并重建。这对我有用。
我的问题是我在本地安装的软件包版本高于我引用的项目。如果您转到 工具 > NuGet 包管理器 > 包管理器设置 > 常规 > 清除所有 NuGet 缓存 然后重建您的解决方案,它将安装引用的包并且错误将会消失。
我有一个类似的问题,我的项目有这样的包引用:
包参考:
Package A
Package B
Package A
因为项目 B 引用了包 A,所以我刚刚从主包列表中删除了包 A,剩下的包 B 引用了包 A。我重建了解决方案,问题消失了。
对我来说,这是由于引用了一个使用指定版本的 Microsoft.AspNetCore.App 的项目,而我的项目没有:
我的项目:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App"/>
</ItemGroup>
参考项目:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
</ItemGroup>
修复(我的项目):
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.2" />
</ItemGroup>
识别检测到的包。例如在我的例子中,它是 System.Diagonistics.DiagonsticSource
从您的项目中查找此程序集引用的位置 (参考 > 属性 > 路径)
复制路径并检查。就我而言, 项目引用的是 4.6.0 但我要引用的程序集 安装需要 5.0.0 的版本 System.Diagonistics.DiagonsticSource 最低
转到管理项目的 NuGet 包并搜索 “System.Diagonistics.DiagonsticSource”和 更新。请记住,这也可能会导致另一个“Detected 包降级”错误(如果出现这种情况,您应该返回到第一步 发生)
现在,安装您最初想要安装的程序集(在我的 如果是 Microsoft.ApplicationInsights)