在 VisualStudio2017中,黄色警告三角形对于依赖项意味着什么?

我刚刚将我的 PCL 库转换为一个新的。Net Standard 库和我在依赖项上有一些黄色警告三角形,如下所示:

enter image description here

在转换过程中,它带来了所有的 nuget 包,包括依赖关系,所以它可以被升级。

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

剪辑

构建日志:

要防止 NuGet 在构建过程中还原包,请打开 Visual 对话框中,单击 PackageManager 节点并取消选中 “允许 NuGet 在构建过程中下载丢失的软件包。”NU1605: 检测到软件包降级: NUnit 从3.8.1降至2.6.4 直接从项目打包来选择不同的版本。 < br > 测试-> MyProj.UI.Test-> MyProj.Core. 测试-> NUnit (> = 3.8.1) < br > Test-> NUnit (> = 2.6.4) NU1605: 检测到的包 降级: NUnit 从3.8.1降到2.6.4。直接引用包 从项目中选择一个不同的版本 - > MyProj.UI.Test-> MyProj.Core. Test-> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS-> NUnit (> = 2.6.4) NU1605: 检测到的软件包 降级: NUnit 从3.8.1降到2.6.4。直接引用包 从项目中选择一个不同的版本。 < br > MyProj.UI. 测试. Android-> MyProj.UI.Test-> MyProj.Core. 测试-> NUnit (> = 3.8.1) MyProj.UI.Test.Android-> NUnit (> = 2.6.4)

123022 次浏览

在构建 Log 中,我碰巧注意到:

< p > C: 程序 文件 dotnet sdk 2.0.2 Sdks Microsoft.NET.Sdk build Microsoft.NET.Sdk 构建 Microsoft.NET.Sdk. DefaultItems.target (199,5) : 警告: “ NETStandard.Library”的 PackageReference 包含在 此包由.NETSDK 隐式引用 并且通常不需要从项目中引用它 更多信息,请参见 https://aka.ms/sdkimplicitrefs

因此,我去卸载了所有的软件包,这些软件包被列为 .Net Standard Nuget的依赖项,在这里列出:

. NET 标准1.1

  • NETCore.Platform (> = 1.1.0)

  • 系统收集(> = 4.3.0)

  • 并发(> = 4.3.0)

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

  • 系统、诊断、工具(> = 4.3.0)

  • 系统。诊断。追踪(> = 4.3.0)

  • 全球化(> = 4.3.0)

  • System.IO (> = 4.3.0)

  • System.IO.Compress (> = 4.3.0)

  • System.Linq (> = 4.3.0)

  • System.Linq.Expressions (> = 4.3.0)

  • System.Net. Http (> = 4.3.2)

  • System.Net. 基元(> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • 系统反射(> = 4.3.0)

  • 系统、反射、扩展(> = 4.3.0)

  • 系统、反射、原语(> = 4.3.0)

  • System.Resources. ResourceManager (> = 4.3.0)

  • 系统运行时(> = 4.3.0)

  • 系统。运行时。扩展(> = 4.3.0)

  • System.Runtime.InteropServices (> = 4.3.0)

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

  • 系统。运行时。数值(> = 4.3.0)

  • System.Text 编码(> = 4.3.0)

  • 系统、文本、编码、扩展(> = 4.3.0)

  • System.Text 正则表达式(> = 4.3.0)

  • 系统线程(> = 4.3.0)

  • 系统、线程、任务(> = 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>

黄色的三角形意味着包物理文件不见了,不再可用于硬盘驱动器。

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

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

enter image description here

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

但是如果问题是丢失了不止几个包,我用来检索丢失的包的最好和最快的方法是:

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

注意这类与项目中丢失的文件有关的问题总是很难解决,而且取决于开发人员的经验,所以不要指望这个问题有一个简单的解决方案。

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

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

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

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

尽管听起来很老套,试着重建然后重新开始 VS ——然后继续你的一天:)

如果我尝试卸载 标记答案中提到的 Microsoft.NETCore.Platforms,我会得到以下错误:

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

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

网络标准的包参考文献。“库”已包含在您的项目中。方法隐式引用此包。NET SDK,通常不需要从项目中引用它。有关更多信息,请参见 https://aka.ms/sdkimplicitrefs

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

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

https://aka.ms/sdkimplicitrefs建议下所述:

瞄准目标时。NET 核心或。NET 标准,永远不要通过项目文件中的 <PackageReference>项显式引用 Microsoft.NETCore.AppNETStandard.Library元包。

现在警告消失了!

对于任何有这个问题的新人: 试试这个,你会记住我: D

转到: Tools > NuGet Administrator > Configurations,并验证是否检查了 Allow nuget...automatically check...

之后,你唯一要做的就是点击按钮 “清除所有 NuGet 缓存”

就是这样。您不必手动编辑任何东西; 这可能是危险的,相信我,我曾经需要做一些步骤,这里描述的 很多的时间。

如果您想尝试 Microsoft 官方解决方案来解决这个问题,您可以在这里检查它: https://learn.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

但只要清理一下缓存就解决了我所有的问题。

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

有用的截图:

enter image description here

我刚把 Visual Studio 更新到16.4.4,问题就解决了。 参考是固定的,没有更多的黄色三角形。 谢谢

如果您有警告图标,但没有警告,并且似乎没有任何实际错误,右键单击项目 > 卸载项目 > 右键再次单击项目 > 重新加载项目。图标出现了一会儿,然后在 VisualStudio2019中为我清除了。这样可以避免完全重新启动 VisualStudio。

我在克隆项目时遇到了这个错误。主要原因是 Nuget 包无法恢复,我找到了一个解决方案,使 Nuget.org 只有活动资源。

enter image description here

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

希望能有帮助

以上这些对我来说都不管用。我在解决方案中有一个项目,在解决方案中对其他项目的依赖关系上有警告三角形,这在 VS 中造成了很多红色错误,但是,它可以很好地构建、运行和调试。我最终在解决方案树中右键单击项目名称卸载了项目,然后重新加载了项目,现在一切都很顺利。感谢视觉工作室。我正在使用 VS201916.7.1

黄色感叹号通常是因为缺少引用或不支持 dll。如果您克隆了一个存储库,那么很多金块包可能会显示黄色感叹号。如果您已经验证了项目版本,但仍然存在问题,您可以尝试下面的解决方案。

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

Update-Package -Reinstall

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

这个解决方案在我的情况下工作。我正在使用 VS2019。希望这也能帮助其他人。

右键单击“解决方案”和“重建解决方案”。 这招对我很管用

我在 VS2019版本16.8.3中重命名 a 时遇到了这个问题。NET Core 3.1项目。在重新命名项目之后,黄色三角形就出现了。重建、清理等等,都没有用。关闭和重新打开解决方案为我解决了这个问题。

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

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

卸载项目

负载项目

这招对我很管用。

我有引用项目依赖关系的三角形

 System.Drawing.dll
在错误列表框中也有警告。 移除它为我解决了问题。 你知道,根据错误列表中的警告,System.Drawing.dll已经转发到 System.Drawing.Common 您需要通过 ManageNuGetPackages 安装它。 现在它正常工作了

转到您的项目/解决方案目录并执行:

dotnet restore

那你就完了!

如果你

  • 删除 bin文件夹和 obj文件夹
  • 清理项目
  • 最好也从 C:\Users\{user}\.nuget\packages中删除缓存的包

然后恢复包。这对我来说工作。

dotnet restore

我只是将我的本地文件夹映射到 tfs 代码分支,然后遇到了这些问题,

我不得不查看项目的建设顺序,清洁他们一个一个的顺序,并建立清洁后他们。(或者您可以尝试清理整个解决方案并重新构建它)

您可以通过 选择 Solution > Project (From Top) > Build Order查看项目生成顺序

我在更改输出目录时遇到了这个问题:

<BaseOutputPath>$(SolutionDir)</BaseOutputPath>

一旦我删除了这个属性,一切都工作正常! (VS 2022 v17.0 btw)

我也有同样的问题,撞了我的头两天后,我发现这是因为

长途跋涉是不允许的

例如,我项目中的两个类库的名称 length > 或 = 40 所以它们不是 netstandard 2.0

的加载依赖关系

如果具有相同的情况,则需要首先从注册表更新长路径限制,并将其值设置为1

https://www.thewindowsclub.com/how-to-enable-or-disable-win32-long-paths-in-windows-11-10

机器系统 CurrentControlSet 控制文件系统

就像我在另一篇文章中说的,同样的问题,这只是文档... 我知道这是准备解决它,我的答案之一是准备说一些关于它的东西,但是,也许你们中的一些人提出了同样的错误,这里列出的解决方案没有一个能解决这个问题... 我不知道为什么这个问题与全局安装。但是,如果您再次提出这个问题,您需要访问

C: Users YourUsername.nuget 用户 YourUsername.nuget

并删除所有的内容,不要害怕,这是一个缓存生成器比将再次创建,如果需要它。