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


100

我刚刚将PCL库转换为新的.Net Standard库,并且在依存关系上有一些黄色警告三角形,如下所示:

在此处输入图片说明

在转换过程中,它使所有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)


将鼠标悬停在它们上面,它将告诉您。在大多数情况下,这是因为它找不到/解决它们或存在冲突。如果您还在“错误”窗口中查找,则可能会解释解决方案中的错误。
恩科西(Nkosi),

52
@Nkosi悬停在它们上面对我没有显示任何内容
user1

2
在构建程序时将使用这些引用。但是它们对IDE也很重要,它需要解决它们才能提供IntelliSense。如果失败,则会出现警告三角形。使用构建>构建来获取错误消息。
汉斯·帕桑

27
当这发生在我身上时,没有构建警告。警告图标只是停留在用户界面中。卸载和重新加载项目修复了该问题。
StackOverthrow

1
@TKK:我认为这只会持续几分钟,然后是UI中的警告三角形。至少那是我重新打开解决方案后发生的事情。我以为最初是固定的,但随后突然出现了警告三角形。
PussInBoots

Answers:


68

听起来有些陈词滥调,请尝试重建然后重新启动VS-并开始您的一天:)


5
感谢您让我想起经典的“尝试重新启动”解决方案:)。花了最后一个小时,想知道为什么VS在构建解决方案时会删除我的软件包。我重新启动了VS,一切正常。/ ugh
Ryan E.

1
经典的“关闭”方法并不总是解决世界上所有
不幸的问题

我今天刚刚用确切的最新版本(16.5.1)更新了Visual Studio 2019。问题仍然存在,但此解决方案仍然有效:)
Willy David Jr

关闭并重新打开它:-D
Don Ch

61

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

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

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


4
只是重新打开解决方案而不是重新启动VS对我也起作用。
Quido

为什么我要还原dotnet?构建不是必须这样做吗?
pabrams

11

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

C:\ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ 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>

7

黄色三角形表示软件包的物理文件已丢失,并且在硬盘驱动器上不再可用。

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

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

在此处输入图片说明

如果问题缺少几个软件包,则可以修改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中发生。


1
关于项目,重新启动Visual Studio(2019)似乎为我修复了它。
史蒂夫·史密斯,

没有packages.coinfig
pabrams

6

仅出于文档目的,这个问题的新手尝试一下,您将记住我:D

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

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

就是这样,您不必编辑手动思考文件就可以构成危险,相信我,我过去经常需要做一些比此处描述的步骤更多的步骤,并尝试使用超过5个步骤的Microsoft官方文档该问题,您可以在这里检查:https : //docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

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


4

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


2

奇怪的是,我的.Net Core 3项目只需要我从项目上下文中单击“加载项目依赖项”,然后警告图标就消失了。

有用的屏幕截图:

在此处输入图片说明



1

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

在此处输入图片说明

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

希望能帮助到你


1

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

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

Update-Package -Reinstall

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

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


0

可能有1个软件包可能导致所有其他软件包都不被加载。尝试逐一注释.csproj中的软件包,并找出哪个问题使范围缩小。


0

如果我尝试Microsoft.NETCore.Platforms按照标记答案中的说明进行卸载,则会出现以下错误:

无法卸载“ Microsoft.NETCore.Platforms.1.1.0”,因为“ NETStandard.Library.2.0.3”依赖于此。

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

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

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

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

如在规定https://aka.ms/sdkimplicitrefs建议

面向.NET Core或.NET Standard时,永远不要通过项目文件中的项目来明确引用Microsoft.NETCore.AppNETStandard.Librarymetapackages <PackageReference>

现在警告消失了!


0

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


-3

如果您没有问题,则可以更新所有可以解决此问题的NuGet软件包。

工具菜单-> NuGet软件包管理器 -> 管理解决方案的Nuget软件包。出现此菜单时,单击“ 更新”选项卡,然后单击“ 全部更新”按钮。


4
那不会将所有软件包更新到最新版本吗?如果需要一个或多个软件包的特定(最新)版本,则可能不希望如此。
Gertsen

如果您已经在使用最新的软件包,那么这是一个很好的解决方案。立即修复了我的问题。
n4rzul

1
这并不总是解决方案。有时项目中有些软件包不应该更新。
卡拉斯,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.