黄色警告三角形对 Visual Studio 2017 年的依赖项意味着什么?
What do Yellow Warning Triangles mean on Dependencies in Visual Studio 2017?
我刚刚将我的 PCL 库转换为新的 .Net 标准库,我的依赖项上有一些黄色警告三角形,如下所示:
在转换过程中,它带来了所有 nuget 包,包括依赖项,因此它可能是重复的。
如何找出黄色警告三角形代表什么?
编辑
构建日志:
To prevent NuGet from restoring packages during build, open the Visual
Studio Options dialog, click on the Package Manager node and uncheck
'Allow NuGet to download missing packages during build.' NU1605:
Detected package downgrade: NUnit from 3.8.1 to 2.6.4. Reference the
package directly from the project to select a different version.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (>= 3.8.1)
MyProj.UI.Tests -> NUnit (>= 2.6.4) NU1605: Detected package
downgrade: NUnit from 3.8.1 to 2.6.4. Reference the package directly
from the project to select a different version. MyProj.UI.Tests.iOS
-> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (>= 3.8.1) MyProj.UI.Tests.iOS -> NUnit (>= 2.6.4) NU1605: Detected package
downgrade: NUnit from 3.8.1 to 2.6.4. Reference the package directly
from the project to select a different version.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests ->
NUnit (>= 3.8.1) MyProj.UI.Tests.Android -> NUnit (>= 2.6.4)
在构建日志中我碰巧注意到了这一点:
C:\Program
Files\dotnet\sdk.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets(199,5):
warning : A PackageReference for 'NETStandard.Library' was included in
your project. This package is implicitly referenced by the .NET SDK
and you do not typically need to reference it from your project. For
more information, see 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>
黄色三角形表示软件包物理文件已消失,不再在硬盘上可用。
这通常发生在对 TFS 中的源代码管理发出 get latest version
请求时,尤其是在使用新机器并且您想从 TFS 服务器获取项目代码时。
它也可能是由 low quality internet connection
引起的,这几乎总是会导致数据丢失或下载文件损坏。
如果问题是缺少几个包,您可以修改 packages.config
文件并从 packages.config
中删除这些包,然后通过 nuget 包管理器重新安装缺少的包。
但是如果问题是丢失了多个包,我用来找回丢失包的最好和最快速的方法是:
- 正在打开 visual studio
的新实例
- 创建一个与缺少包的项目类型相同的新项目解决方案(示例:ASP.Net MVC with Individual User Account)
- 将新项目的包更新到最新,以匹配之前项目解决方案的包版本
- 打开文件资源管理器并导航到您创建的新解决方案中的 packages 文件夹
- 通过全选复制文件夹
Packages
的所有内容,注意 不要复制 Packages 文件夹本身,只复制文件夹中的内容
- 将其粘贴到您之前的解决方案(缺少软件包的解决方案)中,覆盖现有项目的
Packages
文件夹中。
- 在解决方案资源管理器中转到您的包文件夹并将其展开,然后单击刷新按钮可以看到许多丢失的包现在显示时没有黄色三角形
- 最后你会得到几个丢失的包,当你创建新的解决方案时默认情况下不包括它们,你需要从你的 packages.config 文件(nuget 包管理器的文件)中删除它们读取以确定已安装的包,并使用 nuget 包管理器将它们安装为新包。
注意此类与项目中丢失文件相关的问题总是很难修复,并且取决于开发人员的经验,因此不要指望有一个简单的解决方案。
关于错误的原因,Microsoft 说这是一个错误,但它可能发生在 Visual Studio 的任何版本上。
运行 dotnet restore
在您进行任何复杂操作之前,您将获得比错误 window 或解决方案资源管理器中更多的信息。
您可以在程序包管理器控制台中运行此命令:
Tools > NuGet Package Manager > Package Manager Console
听起来很老套,尝试重建然后重新启动 VS - 继续你的一天:)
如果我尝试按照 中的说明卸载 Microsoft.NETCore.Platforms
,我会收到以下错误:
Unable to uninstall 'Microsoft.NETCore.Platforms.1.1.0' because 'NETStandard.Library.2.0.3' depends on it.
我卸载了其他软件包,但我仍然收到 NETSDK1023
错误:
A PackageReference for 'NETStandard.Library' was included in your project. This package is implicitly referenced by the .NET SDK and you do not typically need to reference it from your project. For more information, see https://aka.ms/sdkimplicitrefs
现在我编辑了我的 .csproj 并删除了以下部分
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
如建议下的https://aka.ms/sdkimplicitrefs所述:
When targeting .NET Core or .NET Standard, never have an explicit reference to the Microsoft.NETCore.App
or NETStandard.Library
metapackages via a <PackageReference>
item in your project file.
现在警告消失了!
对于任何有此问题的新人:试试这个,你会记住我的:D
转到:Tools
> NuGet Administrator
> Configurations
并确认您已选中 Allow nuget...
和 automatically check...
。
之后,您唯一需要做的就是单击按钮 “清除所有 NuGet 缓存”!
就是这样。您不必手动编辑任何内容;这可能很危险,相信我,我曾经需要 很多 的时间来执行这里描述的一些步骤。
如果你想尝试微软官方解决这个问题,你可以在这里查看:https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio
但是清理缓存就解决了我所有的问题。
奇怪的是,我的 .Net Core 3 项目需要我从项目上下文中简单地单击 "Load project dependencies",然后警告图标就消失了。
有用的截图:
我刚刚将 Visual studio 更新到 16.4.4,问题已解决。
参考是固定的,不再有黄色三角形。
谢谢。
如果您有警告图标但没有警告并且实际上没有任何错误,请右键单击该项目 > 卸载项目 > 再次右键单击该项目 > 重新加载项目。该图标出现了片刻,然后在 Visual Studio 2019 年为我清除了。这避免了完全 Visual Studio 重启。
我在克隆项目时遇到了这个错误。主要原因是 Nuget 包无法恢复,我通过将 nuget.org 设为唯一活动资源找到了解决方案。
确保您 select Nuget.org 作为唯一的活动资源。
希望对您有所帮助
以上的 None 对我有用。我在解决方案中有一个项目在解决方案中的其他项目的依赖项上带有警告三角形,这导致 VS 中出现大量红色错误。但是,它会构建 运行 并进行调试。我最终通过右键单击解决方案树中的项目名称卸载了该项目,然后重新加载了该项目,现在一切顺利。谢谢 Visual Studio,嗯。我正在使用 VS 2019 16.7.1
黄色感叹号通常是因为缺少引用或不支持的dll。如果您克隆存储库,那么许多块包可能会显示黄色感叹号。如果您已验证项目版本,但问题仍然存在,您可以尝试以下解决方案。
在包管理器控制台中,select您遇到此问题的项目,然后键入以下命令。
Update-Package -Reinstall
这将强制重新安装所有软件包。此命令不会更新 NuGet 包的版本,只会强制重新安装它们。
此解决方案适用于我的情况。我正在使用 VS2019。希望这对其他人也有帮助。
右键单击“解决方案”和“重建解决方案”。
它对我有用。
我刚在 VS2019 版本 16.8.3 重命名 .NET Core 3.1 项目时遇到了这个问题。重命名项目后立即出现黄色三角形。重建、清理等。没有任何效果。关闭并重新打开解决方案为我解决了问题。
我在引用的项目依赖项上有三角形。我刚刚删除并添加了依赖项以删除三角形。
我发布这个答案只是因为这里提供的其他解决方案对我没有帮助。
-卸载项目
-加载项目
这对我有用。
我在引用的项目依赖项上有三角形。我添加了
的参考
System.Drawing.dll
。错误列表框中也有警告。
删除它解决了我的问题。
你知道,根据错误列表中的警告 System.Drawing.dll
已转发给 System.Drawing.Common
并且您需要通过 Manage NuGet Packages 安装它。
现在可以正常使用了。
转到您的 project/solution 目录并执行:
dotnet restore
那就大功告成了!
如果你
会有所帮助
- 删除
bin
文件夹和 obj
文件夹
- 清理项目
- 最好也从
C:\Users\{user}\.nuget\packages
中删除缓存包
然后恢复包。对我有用。
dotnet restore
我刚刚将我的本地文件夹映射到 tfs 代码分支并遇到了这些问题,
我不得不查看项目构建顺序,按顺序一个一个地清理它们,然后在清理后构建它们。(或者你可以尝试清理整个解决方案并再次构建它)
您可以通过 Select 解决方案 > 项目(自上而下)> 构建顺序
查看项目构建顺序
我在更改输出目录时遇到了问题:
<BaseOutputPath>$(SolutionDir)</BaseOutputPath>
我一删除 属性,一切正常! (对 2022 v17.0 顺便说一下)
我有同样的问题,在我的头上敲了 2 天后我发现这是因为
不允许长路径
例如,我项目中的两个 class 库的名称长度 > 或 = 40
所以他们没有加载 netstandard2.0
的依赖
如果你有同样的情况,你需要先从注册表更新长路径限制并将其值设置为 1
见https://www.thewindowsclub.com/how-to-enable-or-disable-win32-long-paths-in-windows-11-10
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
我刚刚将我的 PCL 库转换为新的 .Net 标准库,我的依赖项上有一些黄色警告三角形,如下所示:
在转换过程中,它带来了所有 nuget 包,包括依赖项,因此它可能是重复的。
如何找出黄色警告三角形代表什么?
编辑
构建日志:
To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.' NU1605: Detected package downgrade: NUnit from 3.8.1 to 2.6.4. Reference the package directly from the project to select a different version.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (>= 3.8.1)
MyProj.UI.Tests -> NUnit (>= 2.6.4) NU1605: Detected package downgrade: NUnit from 3.8.1 to 2.6.4. Reference the package directly from the project to select a different version. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (>= 3.8.1) MyProj.UI.Tests.iOS -> NUnit (>= 2.6.4) NU1605: Detected package downgrade: NUnit from 3.8.1 to 2.6.4. Reference the package directly from the project to select a different version.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (>= 3.8.1) MyProj.UI.Tests.Android -> NUnit (>= 2.6.4)
在构建日志中我碰巧注意到了这一点:
C:\Program Files\dotnet\sdk.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets(199,5): warning : A PackageReference for 'NETStandard.Library' was included in your project. This package is implicitly referenced by the .NET SDK and you do not typically need to reference it from your project. For more information, see 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>
黄色三角形表示软件包物理文件已消失,不再在硬盘上可用。
这通常发生在对 TFS 中的源代码管理发出 get latest version
请求时,尤其是在使用新机器并且您想从 TFS 服务器获取项目代码时。
它也可能是由 low quality internet connection
引起的,这几乎总是会导致数据丢失或下载文件损坏。
如果问题是缺少几个包,您可以修改 packages.config
文件并从 packages.config
中删除这些包,然后通过 nuget 包管理器重新安装缺少的包。
但是如果问题是丢失了多个包,我用来找回丢失包的最好和最快速的方法是:
- 正在打开 visual studio 的新实例
- 创建一个与缺少包的项目类型相同的新项目解决方案(示例:ASP.Net MVC with Individual User Account)
- 将新项目的包更新到最新,以匹配之前项目解决方案的包版本
- 打开文件资源管理器并导航到您创建的新解决方案中的 packages 文件夹
- 通过全选复制文件夹
Packages
的所有内容,注意 不要复制 Packages 文件夹本身,只复制文件夹中的内容 - 将其粘贴到您之前的解决方案(缺少软件包的解决方案)中,覆盖现有项目的
Packages
文件夹中。 - 在解决方案资源管理器中转到您的包文件夹并将其展开,然后单击刷新按钮可以看到许多丢失的包现在显示时没有黄色三角形
- 最后你会得到几个丢失的包,当你创建新的解决方案时默认情况下不包括它们,你需要从你的 packages.config 文件(nuget 包管理器的文件)中删除它们读取以确定已安装的包,并使用 nuget 包管理器将它们安装为新包。
注意此类与项目中丢失文件相关的问题总是很难修复,并且取决于开发人员的经验,因此不要指望有一个简单的解决方案。
关于错误的原因,Microsoft 说这是一个错误,但它可能发生在 Visual Studio 的任何版本上。
运行 dotnet restore
在您进行任何复杂操作之前,您将获得比错误 window 或解决方案资源管理器中更多的信息。
您可以在程序包管理器控制台中运行此命令:
Tools > NuGet Package Manager > Package Manager Console
听起来很老套,尝试重建然后重新启动 VS - 继续你的一天:)
如果我尝试按照 Microsoft.NETCore.Platforms
,我会收到以下错误:
Unable to uninstall 'Microsoft.NETCore.Platforms.1.1.0' because 'NETStandard.Library.2.0.3' depends on it.
我卸载了其他软件包,但我仍然收到 NETSDK1023
错误:
A PackageReference for 'NETStandard.Library' was included in your project. This package is implicitly referenced by the .NET SDK and you do not typically need to reference it from your project. For more information, see https://aka.ms/sdkimplicitrefs
现在我编辑了我的 .csproj 并删除了以下部分
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
如建议下的https://aka.ms/sdkimplicitrefs所述:
When targeting .NET Core or .NET Standard, never have an explicit reference to the
Microsoft.NETCore.App
orNETStandard.Library
metapackages via a<PackageReference>
item in your project file.
现在警告消失了!
对于任何有此问题的新人:试试这个,你会记住我的:D
转到:Tools
> NuGet Administrator
> Configurations
并确认您已选中 Allow nuget...
和 automatically check...
。
之后,您唯一需要做的就是单击按钮 “清除所有 NuGet 缓存”!
就是这样。您不必手动编辑任何内容;这可能很危险,相信我,我曾经需要 很多 的时间来执行这里描述的一些步骤。
如果你想尝试微软官方解决这个问题,你可以在这里查看:https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio
但是清理缓存就解决了我所有的问题。
奇怪的是,我的 .Net Core 3 项目需要我从项目上下文中简单地单击 "Load project dependencies",然后警告图标就消失了。
有用的截图:
我刚刚将 Visual studio 更新到 16.4.4,问题已解决。 参考是固定的,不再有黄色三角形。 谢谢。
如果您有警告图标但没有警告并且实际上没有任何错误,请右键单击该项目 > 卸载项目 > 再次右键单击该项目 > 重新加载项目。该图标出现了片刻,然后在 Visual Studio 2019 年为我清除了。这避免了完全 Visual Studio 重启。
我在克隆项目时遇到了这个错误。主要原因是 Nuget 包无法恢复,我通过将 nuget.org 设为唯一活动资源找到了解决方案。
确保您 select Nuget.org 作为唯一的活动资源。
希望对您有所帮助
None 对我有用。我在解决方案中有一个项目在解决方案中的其他项目的依赖项上带有警告三角形,这导致 VS 中出现大量红色错误。但是,它会构建 运行 并进行调试。我最终通过右键单击解决方案树中的项目名称卸载了该项目,然后重新加载了该项目,现在一切顺利。谢谢 Visual Studio,嗯。我正在使用 VS 2019 16.7.1
黄色感叹号通常是因为缺少引用或不支持的dll。如果您克隆存储库,那么许多块包可能会显示黄色感叹号。如果您已验证项目版本,但问题仍然存在,您可以尝试以下解决方案。
在包管理器控制台中,select您遇到此问题的项目,然后键入以下命令。
Update-Package -Reinstall
这将强制重新安装所有软件包。此命令不会更新 NuGet 包的版本,只会强制重新安装它们。
此解决方案适用于我的情况。我正在使用 VS2019。希望这对其他人也有帮助。
右键单击“解决方案”和“重建解决方案”。 它对我有用。
我刚在 VS2019 版本 16.8.3 重命名 .NET Core 3.1 项目时遇到了这个问题。重命名项目后立即出现黄色三角形。重建、清理等。没有任何效果。关闭并重新打开解决方案为我解决了问题。
我在引用的项目依赖项上有三角形。我刚刚删除并添加了依赖项以删除三角形。
我发布这个答案只是因为这里提供的其他解决方案对我没有帮助。
-卸载项目
-加载项目
这对我有用。
我在引用的项目依赖项上有三角形。我添加了
的参考 System.Drawing.dll
。错误列表框中也有警告。
删除它解决了我的问题。
你知道,根据错误列表中的警告 System.Drawing.dll
已转发给 System.Drawing.Common
并且您需要通过 Manage NuGet Packages 安装它。
现在可以正常使用了。
转到您的 project/solution 目录并执行:
dotnet restore
那就大功告成了!
如果你
会有所帮助- 删除
bin
文件夹和obj
文件夹 - 清理项目
- 最好也从
C:\Users\{user}\.nuget\packages
中删除缓存包
然后恢复包。对我有用。
dotnet restore
我刚刚将我的本地文件夹映射到 tfs 代码分支并遇到了这些问题,
我不得不查看项目构建顺序,按顺序一个一个地清理它们,然后在清理后构建它们。(或者你可以尝试清理整个解决方案并再次构建它)
您可以通过 Select 解决方案 > 项目(自上而下)> 构建顺序
查看项目构建顺序我在更改输出目录时遇到了问题:
<BaseOutputPath>$(SolutionDir)</BaseOutputPath>
我一删除 属性,一切正常! (对 2022 v17.0 顺便说一下)
我有同样的问题,在我的头上敲了 2 天后我发现这是因为
不允许长路径
例如,我项目中的两个 class 库的名称长度 > 或 = 40 所以他们没有加载 netstandard2.0
的依赖如果你有同样的情况,你需要先从注册表更新长路径限制并将其值设置为 1
见https://www.thewindowsclub.com/how-to-enable-or-disable-win32-long-paths-in-windows-11-10
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem