170

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

在此处输入图像描述

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

4

21 回答 21

149

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

于 2019-06-12T10:01:49.270 回答
70

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

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

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

于 2018-10-15T10:53:08.380 回答
46

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

于 2020-07-09T14:00:54.840 回答
14

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

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的依赖项的软件包:

.NET 标准 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>
于 2017-10-20T13:22:44.900 回答
13

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

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

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

在此处输入图像描述

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

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

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

请注意,与项目丢失文件相关的此类问题总是很难修复,并且取决于开发人员的经验,因此不要指望一个简单的解决方案。

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

于 2018-08-26T20:16:09.583 回答
9

仅出于文档目的,为遇到此问题的新人尝试此操作,您会记住我的:D

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

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

就是这样,您不必编辑手册认为可能很危险,相信我,我以前需要做一些比这里描述的步骤很多时间,并尝试超过 5 个步骤的官方 microsoft 文档这个问题你可以在这里查看:https ://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

但是只要清理缓存就可以解决所有问题

于 2020-01-12T13:45:02.953 回答
4

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

于 2021-01-02T13:38:09.220 回答
3

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

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

Update-Package -Reinstall

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

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

于 2020-08-19T08:38:44.960 回答
3

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

有用的截图:

在此处输入图像描述

于 2020-01-15T18:56:37.077 回答
1

-卸载项目

-加载项目

这对我有用。

于 2021-10-04T09:35:47.843 回答
1

克隆项目时遇到此错误。主要原因是 Nuget 包无法恢复,我通过使 nuget.org 成为唯一的活动资源找到了解决方案。

在此处输入图像描述

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

希望能帮助到你

于 2020-08-07T14:55:01.080 回答
1

如果你会有所帮助

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

然后恢复包。那对我有用。

dotnet restore
于 2021-11-01T20:43:18.510 回答
1

如果我尝试按照标记答案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.App或元包。NETStandard.Library<PackageReference>

现在警告消失了!

于 2019-12-03T12:50:02.240 回答
0

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

于 2020-01-31T08:56:49.370 回答
0

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

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

您可以通过Select the Solution > Project (From Top) > Build Order 查看项目构建顺序

于 2022-01-07T16:20:27.327 回答
0

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

dotnet restore

然后你就完成了!

于 2021-10-10T03:47:57.580 回答
0

更改输出目录时,我遇到了问题:

<BaseOutputPath>$(SolutionDir)</BaseOutputPath>

一旦我删除了该属性,一切正常!(VS 2022 v17.0 顺便说一句)

于 2022-02-28T13:31:11.987 回答
0

我在引用的项目依赖项上有三角形。我添加了参考

 System.Drawing.dll

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

于 2021-10-05T08:08:11.503 回答
-1

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

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

于 2021-04-29T10:39:16.713 回答
-1

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

于 2020-08-18T13:56:22.350 回答
-2

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

于 2020-12-13T14:17:40.717 回答