黄色警告三角形对Visual Studio 2017中的依赖关系意味着什么?

时间:2017-10-19 15:21:32

标签: nuget visual-studio-2017 .net-standard

我刚刚将我的PCL库转换为新的.Net标准库,我的依赖项上有一些黄色警告三角形如下所示:

enter image description here

在转换过程中,它将所有nuget包都包含在内,包括依赖项,因此它可能会令人沮丧。

如何找出黄色警告三角形代表什么?

修改

构建日志:

  

要防止NuGet在构建期间恢复包,请打开Visual   “Studio选项”对话框,单击“包管理器”节点并取消选中   '允许NuGet在构建期间下载丢失的包。 NU1605:   检测到的包降级:NUnit从3.8.1降至2.6.4。参考   直接从项目包中选择一个不同的版本   MyProj.UI.Tests - > MyProj.Core.Tests - > NUnit(> = 3.8.1)
  MyProj.UI.Tests - > NUnit(> = 2.6.4)NU1605:检测到的包   降级:NUnit从3.8.1降至2.6.4。直接参考包   从项目中选择不同的版本。 MyProj.UI.Tests.iOS    - > MyProj.UI.Tests - > MyProj.Core.Tests - > NUnit(> = 3.8.1)MyProj.UI.Tests.iOS - > NUnit(> = 2.6.4)NU1605:检测到的包   降级:NUnit从3.8.1降至2.6.4。直接参考包   从项目中选择不同的版本   MyProj.UI.Tests.Android - > MyProj.UI.Tests - > MyProj.Core.Tests - >   NUnit(> = 3.8.1)MyProj.UI.Tests.Android - > NUnit(> = 2.6.4)

18 个答案:

答案 0 :(得分:9)

仅出于文档目的此问题的新手,请尝试使用此方法,您会记住我:D

如果您转到:工具> NuGet管理员>配置。 并且您已勾选“允许nuget ....”和“自动检查....”。

唯一要做的就是单击按钮“清除所有NuGet缓存”

就是这样,您不必编辑手册就认为可能会很危险,请相信我,我经常需要做一些比这里描述的步骤更多的时间,并尝试5步以上的正式会议您可以在此处查看有关该问题的Microsoft文档:https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

但是仅清理缓存即可解决所有问题

答案 1 :(得分:8)

在执行任何复杂的操作之前运行dotnet restore,将为您提供比错误窗口或解决方案资源管理器中更多的信息。

您可以在程序包管理器控制台中运行以下命令:

  

工具> NuGet软件包管理器>软件包管理器控制台

答案 2 :(得分:7)

如果您有警告图标,但没有警告,并且似乎没有任何实际错误,请右键单击项目>卸载项目>再次右键单击项目>重新加载项目。该图标出现了片刻,然后在Visual Studio 2019中为我清除了。这避免了Visual Studio完全重新启动。

答案 3 :(得分:5)

我刚刚在 VS2019 版本 16.8.3 中重命名 .NET Core 3.1 项目时遇到了这个问题。重命名项目后,黄色三角形立即出现。重建、清理等没有任何效果。关闭并重新打开解决方案为我解决了这个问题。

答案 4 :(得分:4)

在构建日志中,我碰巧注意到了这一点:

  

C:\程序   文件\ DOTNET \ SDK \ 2.0.2 \的SDK \ Microsoft.NET.Sdk \建立\ Microsoft.NET.Sdk.DefaultItems.targets(199,5):   警告:“NETStandard.Library”的PackageReference包含在   你的项目。 .NET SDK隐式引用此包   而且通常不需要从项目中引用它。对于   更多信息,请参阅https://aka.ms/sdkimplicitrefs

因此我去了并卸载了列为此处列出的.Net Standard nuget的依赖项的所有软件包:

  

.NETStandard 1.1

     
      
  • Microsoft.NETCore.Platforms(> = 1.1.0)

  •   
  • System.Collections(> = 4.3.0)

  •   
  • System.Collections.Concurrent(> = 4.3.0)

  •   
  • System.Diagnostics.Debug(> => 4.3.0)

  •   
  • System.Diagnostics.Tools(> = 4.3.0)

  •   
  • System.Diagnostics.Tracing(> = 4.3.0)

  •   
  • System.Globalization(> = 4.3.0)

  •   
  • System.IO(> = 4.3.0)

  •   
  • System.IO.Compression(> = 4.3.0)

  •   
  • System.Linq(> = 4.3.0)

  •   
  • System.Linq.Expressions(> = 4.3.0)

  •   
  • System.Net.Http(> = 4.3.2)

  •   
  • System.Net.Primitives(> = 4.3.0)

  •   
  • System.ObjectModel(> = 4.3.0)

  •   
  • System.Reflection(> = 4.3.0)

  •   
  • System.Reflection.Extensions(> = 4.3.0)

  •   
  • System.Reflection.Primitives(> = 4.3.0)

  •   
  • System.Resources.ResourceManager(> = 4.3.0)

  •   
  • System.Runtime(> = 4.3.0)

  •   
  • System.Runtime.Extensions(> = 4.3.0)

  •   
  • System.Runtime.InteropServices(> = 4.3.0)

  •   
  • System.Runtime.InteropServices.RuntimeInformation(> => 4.3.0)

  •   
  • System.Runtime.Numerics(> = 4.3.0)

  •   
  • System.Text.Encoding(> = 4.3.0)

  •   
  • System.Text.Encoding.Extensions(> = 4.3.0)

  •   
  • System.Text.RegularExpressions(> = 4.3.0)

  •   
  • System.Threading(> = 4.3.0)

  •   
  • System.Threading.Tasks(> = 4.3.0)

  •   
  • System.Xml.ReaderWriter(> = 4.3.0)

  •   
  • System.Xml.XDocument(> = 4.3.0)

  •   

黄色警告消失了。

从这里开始:https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

我还发现你可以使用NoWarn属性,如下所示:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

答案 5 :(得分:3)

黄色三角形表示软件包的物理文件已丢失,在HDD上不再可用。

在TFS中的源代码控制上发出get latest version请求时,通常会发生这种情况,尤其是在使用新计算机时,并且您希望从TFS服务器获取项目代码。

它也可能由low quality internet connection引起,几乎总是会导致数据丢失或下载的文件损坏。

enter image description here

如果问题缺少几个软件包,则可以修改packages.config文件并从packages.config中删除这些软件包,然后通过nuget软件包管理器重新安装丢失的软件包。

但是,如果问题缺少多个软件包,那么我用来检索丢失的软件包的最佳,最快的方法是:

  1. 打开Visual Studio的新实例
  2. 使用与缺少包的项目类型相同的项目类型创建一个新的项目解决方案(例如:具有个人用户帐户的ASP.Net MVC)
  3. 将新项目的软件包更新为最新版本,以匹配先前项目解决方案的软件包版本
  4. 打开文件资源管理器,然后导航到您创建的新解决方案中的“ packages”文件夹
  5. 通过全部选择来复制文件夹Packages的所有内容,注意不要只复制Packages文件夹本身的内容
  6. 将其粘贴到先前的解决方案(缺少软件包的解决方案)中的Packages文件夹中,并覆盖现有项目。
  7. 转到解决方案资源管理器中的“ packages”文件夹并展开它,然后单击“刷新”按钮以查看现在显示的许多缺少的软件包都没有黄色三角形
  8. 最后,您最终会遇到几个缺少的软件包,当您创建新解决方案时默认情况下不包括这些软件包,您需要将它们从packages.config文件(nuget软件包管理器中读取的文件)中删除以确定安装软件包,然后使用nuget软件包管理器将其安装为新软件包。

注意,这些与项目中缺少文件有关的问题始终很难解决,并且取决于开发人员的经验,因此不要指望对此有一个简单的解决方案。

关于错误的原因,微软表示这是一个错误,但可以在任何版本的Visual Studio中发生。

答案 6 :(得分:1)

听起来很陈旧,尝试重建然后重新启动VS-并开始您的一天:)

答案 7 :(得分:1)

我刚刚将Visual Studio更新到16.4.4,此问题已解决。 参考是固定的,不再有黄色三角形。 谢谢。

答案 8 :(得分:1)

克隆项目时遇到了这个错误。主要原因是Nuget软件包无法还原,我通过将nuget.org设为仅活动资源来找到解决方案。

enter image description here

确保选择Nuget.org作为唯一的活动资源。

希望有帮助

答案 9 :(得分:1)

黄色感叹号通常是由于缺少参考或不支持的dll。如果克隆存储库,那么许多金块软件包都有可能显示黄色惊叹号。如果您已验证项目版本正确并且仍然存在问题,则可以尝试以下解决方案。

在程序包管理器控制台中,选择您要面对此问题的项目,然后键入以下命令。

Update-Package -Reinstall

这将强制重新安装所有软件包。此命令不会更新NuGet软件包的版本,只会强制重新安装它们。

此解决方案在我的情况下有效。我正在使用VS2019。希望这对其他人也有帮助。

答案 10 :(得分:0)

如果我尝试按照marked answer中的说明卸载Microsoft.NETCore.Platforms,则会出现以下错误:

  

由于'NETStandard.Library.2.0.3'依赖于此,因此无法卸载'Microsoft.NETCore.Platforms.1.1.0'。

我卸载了其他软件包,但仍然出现NETSDK1023错误:

  

您的项目中包含“ NETStandard.Library”的PackageReference。 .NET SDK隐式引用了此程序包,您通常不需要从项目中引用它。有关更多信息,请参见https://aka.ms/sdkimplicitrefs

现在,我编辑.csproj并删除了以下部分

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

根据{em>建议中的https://aka.ms/sdkimplicitrefs中的

  

定位.NET Core或.NET Standard时,永远不要通过项目文件中的Microsoft.NETCore.App项来明确引用NETStandard.Library<PackageReference>元包。

现在警告消失了!

答案 11 :(得分:0)

可能有1个软件包可能导致所有其他软件包都不被加载。尝试一一评论来自.csproj的软件包,并找出哪个是缩小软件包范围的问题。

答案 12 :(得分:0)

以上都不对我有用。我在解决方案中有一个项目,在警告三角形中指出了该解决方案对其他项目的依赖性,这在VS中导致了许多红色错误。但是,它将可以很好地构建,运行和调试。我终于在解决方案树中的项目名称上单击鼠标右键,卸载了该项目,然后重新加载了该项目,现在一切都很高兴。感谢Visual Studio,shmh。我正在使用VS 2019 16.7.1

答案 13 :(得分:0)

重启计算机

我相信我的情况是,某些进程没有在缓存刷新后释放某些dll,然后由于该锁(?)而导致对dll的任何获取失败。

通过重新启动计算机并执行donet restore解决了该问题,我可以再次进行构建而不会丢失软件包错误。

答案 14 :(得分:0)

我在引用的项目依赖项上有三角形。我刚刚删除并添加了依赖项以删除三角形。

我发布这个答案只是因为这里提供的其他解决方案都没有帮助我。

答案 15 :(得分:0)

检查这些包的版本是否兼容

答案 16 :(得分:-1)

右键单击“解决方案并重建解决方案”。 它对我有用。

答案 17 :(得分:-1)

我遇到了这个问题,解决方案是更新NuGet软件包。

工具菜单-> NuGet程序包管理器-> 管理解决方案的Nuget程序包。出现此菜单时,单击更新标签,然后单击全部更新按钮。