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

问题描述 投票:20回答:4

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

enter image description here

在转换过程中,它带来了所有nuget包,包括依赖项,因此它可能是dulicates。

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

编辑

构建日志:

要防止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)

nuget visual-studio-2017 .net-standard
4个回答
12
投票

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

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

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


5
投票

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

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>

4
投票

黄色三角形表示包物理文件已消失,并且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. 通过选择all复制文件夹Packages的所有内容,注意不要仅将Packages文件夹本身复制到文件夹内的内容
  6. Packages文件夹中粘贴您之前的解决方案(包含缺失包的解决方案),并覆盖现有项目。
  7. 转到解决方案资源管理器中的packages文件夹并展开它,然后单击刷新按钮以查看许多缺少的包现在显示没有黄色三角形
  8. 最后,您将最终得到一些缺少的软件包,默认情况下在创建新解决方案时不包含这些软件包,您需要从packages.config文件(nuget软件包管理器所读取的文件)中删除它们以确定已安装的软件包,以及使用nuget包管理器将它们安装为新的。

请注意,与项目中缺少文件相关的问题总是难以修复,并且取决于开发人员的经验,所以不要指望这个问题的简单解决方案。

关于错误的原因,微软称这是一个错误,但它可能发生在任何版本的Visual Studio上。


2
投票

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


0
投票

可能有1个包可能导致所有其他包都无法加载。尝试逐个评论来自.csproj的包,找出哪个是问题来缩小范围。


-1
投票

我有这个问题,解决方案是更新NuGet包。

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

© www.soinside.com 2019 - 2024. All rights reserved.