检测到包降级警告(dotnet core,vs 2017)

时间:2017-03-10 03:15:32

标签: .net nuget .net-core visual-studio-2017 csproj

我刚刚更新了我的解决方案的所有nuget包(dotnet core 1.1项目)。

我现在收到以下警告,但我真的不知道它们的意思。

NETStandard.Library downgrade warning

更新:我仍然收到上述警告。我的Web项目警告Microsoft.NETCore.App包(见下面的截图),我的lib项目警告NETStandard.Library(见上面的截图)

Microsoft.NETCore.App downgrade warning

当尝试在NuGet包管理器中更新Microsoft.NETCore.App时,我收到以下错误:

NuGet upgrade error

希望有人可以帮助我摆脱这些警告并设置它应有的一切,所以我可以更新我的所有包裹。

提前致谢!

20 个答案:

答案 0 :(得分:20)

根据上面的回答,工作解决方案是从csproj文件中删除以下行。

Web App项目:

click

Lib项目:

<RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>

答案 1 :(得分:16)

在我的情况下,这些属性都没有在我的csproj文件中设置。

我不得不告诉VS通过NuGet更新这些软件包。

在从1.0移动到1.1之后解析显式引用隐式依赖.NETCore.App的警告后,出现了警告。

更新21/09/17

这似乎也影响升级到2.0,分辨率是一样的。使用NuGet手动更新这些包。感谢IbrarMumtaz指出这一点!

答案 2 :(得分:14)

在打开现有解决方案后,我发生了这种情况,但不是警告,而是错误。

我打开了YourAwesomeApp.csproj文件并逐个检查了“检测到的软件包降级”错误,并手动将该订单项的版本从现有版本更改为错误本身中显示的指定版本。

例如,如果Error说降级检测到“SqlServer 1.0.4 - &gt; 1.0.3”,那么找到包SqlServer的行并将版本从1.0.3编辑到1.0.4。

构建项目后,这些错误应该会消失。

这方面的缺点是这次我只有5个错误,但如果另一个人的项目包含50个这样的错误会怎样。然后,那个人手动编辑这些行的任务将是非常繁琐和耗时的。

答案 3 :(得分:10)

通过从<NetStandardImplicitPackageVersion>文件中删除csproj元素,我能够在项目中删除这些警告。

有一些关于隐式元数据包的信息in this article,这似乎是这个问题的根本原因。

您可能还需要更新一些依赖项。例如,我必须将BenchmarkDotNet0.10.1升级到0.10.3,以摆脱一些警告,例如您所看到的警告。

答案 4 :(得分:9)

我能够修复一些错误,例如在cproj中添加NoWarn

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
    <NoWarn>$(NoWarn);NU1605</NoWarn>
  </PropertyGroup>

...
</Project>

您可能只想在多个软件包升级期间临时添加它,稍后将其删除。

答案 5 :(得分:4)

尝试使用NuGet

我正在得到:

  

错误NU1605:检测到包降级:System.Net.NameResolution从4.3.0到4.0.0。直接从项目中引用该软件包以选择其他版本。

所以我通过运行(在项目文件夹中)引用了软件包目录:

dotnet add package System.Net.NameResolution

请参见NuGet Errors - NU1605

问题:

  

依赖性软件包在版本上指定了版本约束,该版本约束的版本高于最终解决的还原。也就是说,由于解析程序包时采用“最近获胜”规则,因此图中较近的程序包可能会覆盖较远的程序包。

解决方案:

  

为要使用的更高版本的软件包添加对项目的直接引用。

答案 6 :(得分:3)

尝试删除

<IsPackable>false</IsPackable>

从您的项目文件中-这对我有用!

如果您仍然遇到NU1605错误代码,可以通过将以下内容添加到项目文件中来忽略它:

<PropertyGroup>
    <NoWarn>NU1605</NoWarn>
</PropertyGroup>

答案 7 :(得分:2)

之所以会发生这种情况,是因为您尝试安装的项目需要的子依赖项版本比项目中已经包含的版本要新。

解决方案是在安装软件包之前更新或删除项目中现有的依赖项。

示例:

  

检测到的软件包降级:Newtonsoft.Json从9.0.0降到8.0.0。

这意味着,您的项目中已经有Newtonsoft.Json 8.0.0作为依赖项列出,但是您要安装的软件包至少需要版本9.0.0作为依赖项。

这是因为,因为您为项目指定了显式版本,因此Visual Studio不会自动升级此依赖项。您可以将项目中的依赖项升级到所需的最低版本,也可以将其从项目中删除,然后让要安装的软件包来处理它。

要解决此问题,在上面的示例中,这意味着找到“ Newtonsoft.Json 8.0.0”并将其升级到版本“ 9.0.0”,或者只是在将其从项目中删除之前安装软件包。

答案 8 :(得分:1)

  1. 识别检测到的包。例如在我的情况下,它是 System.Diagonistics.DiagonsticSource enter image description here

  2. 从您的项目中查找此程序集引用的位置 (参考 > 属性 > 路径) enter image description here

  3. 复制路径并检查。就我而言, 项目引用 4.6.0 但我即将引用的程序集 安装需要 5.0.0 版 System.Diagonistics.DiagonsticSource 为最小值

enter image description here

  1. 转到管理项目的 NuGet 包并搜索 “System.Diagonistics.DiagonsticSource”和 更新。请记住,这也可能导致另一个“检测到 包降级”错误(如果出现这种情况,您应该返回第一步 发生)
    enter image description here

  2. 现在,安装您最初想要安装的程序集(在我的 如果是 Microsoft.ApplicationInsights)

答案 9 :(得分:1)

我遇到了类似的问题,我的项目中的软件包引用如下:

包装参考:

which python

因此,因为项目B参考了程序包A,所以我只是从主程序包列表中删除了程序包A,而剩下的程序包B引用了程序包A。我重新构建了解决方案,问题就消失了。

答案 10 :(得分:1)

如果在Razor中遇到netcoreapp3.1的此错误,则只需将项目SDK从Microsoft.NET.Sdk.Razor更改为Microsoft.NET.Sdk

答案 11 :(得分:1)

就我而言,此错误与.NET Core无关,而与.NET Standard相关。

我有两个库A和B。库A依赖于某些nuget包X,而库B依赖于A。一旦我将X升级到新版本,它就开始依赖于{{3}的新版本}(从2.0.2到2.0.3),它以错误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破坏了B的构建。

一旦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):   警告NETSDK1023:“ NETStandard.Library”的软件包参考为   包含在您的项目中。该包被隐式引用   .NET SDK,您通常不需要从您的.NET SDK中引用它。   项目。有关更多信息,请参见I added the NETStandard.Library nuget package   (NETSDK1023)(GWallet.Frontend.XF)

答案 12 :(得分:1)

从项目中手动删除nuget包依赖项,并为每个项安装包修复了我的问题。

答案 13 :(得分:0)

我可以通过下载导致该问题的软件包的早期版本来解决该问题,这似乎是由于未安装的.NET Standard版本引起的,这也应通过更新Visual Studio来解决。

答案 14 :(得分:0)

我试图将Microsoft.AspNetcore.MVC升级到版本2+。对我来说,解决方案是先将所有其他依赖项升级到2+,然后再升级.MVC。

答案 15 :(得分:0)

因此,请尝试完全卸载该软件包并重新安装。 确保您为所有解决方案项目都引用了它。 然后清理并重建。这对我有用。

答案 16 :(得分:0)

对我来说,问题在于我在本地安装的软件包的版本高于我引用的项目。如果您转到工具> NuGet软件包管理器> 软件包管理器设置> 常规> 清除所有NuGet缓存,然后重建您的解决方案,它将安装引用的程序包,错误将消失。

答案 17 :(得分:0)

对我来说,这是由于使用指定版本的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>

答案 18 :(得分:-1)

感谢this answer,我解决了这个问题。基本上,只需在d:\codetest\cntk_docker>docker run 4e4d0888ae57 C:\app\Cntk.Composite-2.6.dll C:\app\Cntk.Core-2.6.dll C:\app\Cntk.Core.CSBinding-2.6.dll C:\app\Cntk.Core.Managed-2.6.dll C:\app\Cntk.Deserializers.Binary-2.6.dll C:\app\Cntk.Deserializers.HTK-2.6.dll C:\app\Cntk.Deserializers.Image-2.6.dll C:\app\Cntk.Deserializers.TextFormat-2.6.dll C:\app\Cntk.Math-2.6.dll C:\app\Cntk.PerformanceProfiler-2.6.dll C:\app\cntk_docker.exe C:\app\cntk_docker.exe.Config C:\app\cntk_docker.pdb C:\app\libiomp5md.dll C:\app\Microsoft.Win32.Primitives.dll C:\app\mkldnn.dll C:\app\mklml.dll C:\app\netstandard.dll C:\app\opencv_world310.dll C:\app\System.AppContext.dll C:\app\System.Collections.Concurrent.dll C:\app\System.Collections.dll C:\app\System.Collections.NonGeneric.dll C:\app\System.Collections.Specialized.dll C:\app\System.ComponentModel.dll C:\app\System.ComponentModel.EventBasedAsync.dll C:\app\System.ComponentModel.Primitives.dll C:\app\System.ComponentModel.TypeConverter.dll C:\app\System.Console.dll C:\app\System.Data.Common.dll C:\app\System.Diagnostics.Contracts.dll C:\app\System.Diagnostics.Debug.dll C:\app\System.Diagnostics.FileVersionInfo.dll C:\app\System.Diagnostics.Process.dll C:\app\System.Diagnostics.StackTrace.dll C:\app\System.Diagnostics.TextWriterTraceListener.dll C:\app\System.Diagnostics.Tools.dll C:\app\System.Diagnostics.TraceSource.dll C:\app\System.Diagnostics.Tracing.dll C:\app\System.Drawing.Primitives.dll C:\app\System.Dynamic.Runtime.dll C:\app\System.Globalization.Calendars.dll C:\app\System.Globalization.dll C:\app\System.Globalization.Extensions.dll C:\app\System.IO.Compression.dll C:\app\System.IO.Compression.ZipFile.dll C:\app\System.IO.dll C:\app\System.IO.FileSystem.dll C:\app\System.IO.FileSystem.DriveInfo.dll C:\app\System.IO.FileSystem.Primitives.dll C:\app\System.IO.FileSystem.Watcher.dll C:\app\System.IO.IsolatedStorage.dll C:\app\System.IO.MemoryMappedFiles.dll C:\app\System.IO.Pipes.dll C:\app\System.IO.UnmanagedMemoryStream.dll C:\app\System.Linq.dll C:\app\System.Linq.Expressions.dll C:\app\System.Linq.Parallel.dll C:\app\System.Linq.Queryable.dll C:\app\System.Net.Http.dll C:\app\System.Net.NameResolution.dll C:\app\System.Net.NetworkInformation.dll C:\app\System.Net.Ping.dll C:\app\System.Net.Primitives.dll C:\app\System.Net.Requests.dll C:\app\System.Net.Security.dll C:\app\System.Net.Sockets.dll C:\app\System.Net.WebHeaderCollection.dll C:\app\System.Net.WebSockets.Client.dll C:\app\System.Net.WebSockets.dll C:\app\System.ObjectModel.dll C:\app\System.Reflection.dll C:\app\System.Reflection.Extensions.dll C:\app\System.Reflection.Primitives.dll C:\app\System.Resources.Reader.dll C:\app\System.Resources.ResourceManager.dll C:\app\System.Resources.Writer.dll C:\app\System.Runtime.CompilerServices.VisualC.dll C:\app\System.Runtime.dll C:\app\System.Runtime.Extensions.dll C:\app\System.Runtime.Handles.dll C:\app\System.Runtime.InteropServices.dll C:\app\System.Runtime.InteropServices.RuntimeInformation.dll C:\app\System.Runtime.Numerics.dll C:\app\System.Runtime.Serialization.Formatters.dll C:\app\System.Runtime.Serialization.Json.dll C:\app\System.Runtime.Serialization.Primitives.dll C:\app\System.Runtime.Serialization.Xml.dll C:\app\System.Security.Claims.dll C:\app\System.Security.Cryptography.Algorithms.dll C:\app\System.Security.Cryptography.Csp.dll C:\app\System.Security.Cryptography.Encoding.dll C:\app\System.Security.Cryptography.Primitives.dll C:\app\System.Security.Cryptography.X509Certificates.dll C:\app\System.Security.Principal.dll C:\app\System.Security.SecureString.dll C:\app\System.Text.Encoding.dll C:\app\System.Text.Encoding.Extensions.dll C:\app\System.Text.RegularExpressions.dll C:\app\System.Threading.dll C:\app\System.Threading.Overlapped.dll C:\app\System.Threading.Tasks.dll C:\app\System.Threading.Tasks.Parallel.dll C:\app\System.Threading.Thread.dll C:\app\System.Threading.ThreadPool.dll C:\app\System.Threading.Timer.dll C:\app\System.ValueTuple.dll C:\app\System.Xml.ReaderWriter.dll C:\app\System.Xml.XDocument.dll C:\app\System.Xml.XmlDocument.dll C:\app\System.Xml.XmlSerializer.dll C:\app\System.Xml.XPath.dll C:\app\System.Xml.XPath.XDocument.dll C:\app\zip.dll C:\app\zlib.dll Unhandled Exception: System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'Cntk.Core.CSBinding-2.6.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) at CNTK.CNTKLibPINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_CNTKLib(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, ExceptionDelegate divideByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate invalidCastDelegate, ExceptionDelegate invalidOperationDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowDelegate, ExceptionDelegate systemExceptionDelegate) at CNTK.CNTKLibPINVOKE.SWIGExceptionHelper..cctor() --- End of inner exception stack trace --- at CNTK.CNTKLibPINVOKE.SWIGExceptionHelper..ctor() at CNTK.CNTKLibPINVOKE..cctor() --- End of inner exception stack trace --- at CNTK.CNTKLibPINVOKE.DeviceDescriptor__CPUDevice() at CNTK.DeviceDescriptor._CPUDevice() at CNTK.DeviceDescriptor.get_CPUDevice() at cntk_docker.Program.Main(String[] args) in D:\codetest\cntk_docker\cntk_docker\Program.cs:line 14 文件的<PropertyGroup>标签内添加以下行:

.csproj

答案 19 :(得分:-1)

我刚刚遇到这个问题,更新NuGet包对我有用。