我刚刚将我的PCL库转换为新的.Net标准库,我的依赖项上有一些黄色警告三角形,如下所示:
在转换过程中,它带来了所有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)
在进行任何复杂的操作之前运行dotnet restore
,您将获得比错误窗口或解决方案资源管理器中更多的信息。
您可以在程序包管理器控制台中运行此命令:
工具> NuGet包管理器>包管理器控制台
在构建日志中,我碰巧注意到了这一点:
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>
黄色三角形表示包物理文件已消失,并且HDD上不再可用。
这通常发生在TFS中的源代码控制上发出get latest version
请求时,尤其是在使用新机器时,并且您希望从TFS服务器获取项目代码。
它也可能是由low quality internet connection
引起的,几乎总是会导致数据丢失或下载的文件损坏。
如果问题是缺少一些软件包,您可以修改packages.config
文件并从packages.config
中删除这些软件包,并通过nuget软件包管理器重新安装缺少的软件包。
但是,如果问题是缺少一些包,我用来检索丢失包的最好和最快的方法是:
Packages
的所有内容,注意不要仅将Packages文件夹本身复制到文件夹内的内容Packages
文件夹中粘贴您之前的解决方案(包含缺失包的解决方案),并覆盖现有项目。请注意,与项目中缺少文件相关的问题总是难以修复,并且取决于开发人员的经验,所以不要指望这个问题的简单解决方案。
关于错误的原因,微软称这是一个错误,但它可能发生在任何版本的Visual Studio上。
听起来很陈旧,尝试重建然后重新启动VS - 并继续你的一天:)
可能有1个包可能导致所有其他包都无法加载。尝试逐个评论来自.csproj的包,找出哪个是问题来缩小范围。
我有这个问题,解决方案是更新NuGet包。
工具菜单 - > NuGet包管理器 - >管理解决方案的Nuget包。出现此菜单时,单击“更新”选项卡,然后单击“全部更新”按钮。