我刚刚将我的 PCL 库转换为新的 .Net 标准库,我的依赖项上有一些黄色警告三角形,如下所示:
https://i.stack.imgur.com/NhEd0.png
在转换过程中,它带来了所有 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)
听起来很老套,尝试重建然后重新启动 VS - 然后继续你的一天:)
在执行任何复杂操作之前运行 dotnet restore
,您将获得比错误窗口或解决方案资源管理器中更多的信息。
您可以在包管理器控制台中运行此命令:
工具 > NuGet 包管理器 > 包管理器控制台
如果您有警告图标但没有警告并且似乎没有任何问题,请右键单击项目 > 卸载项目 > 再次右键单击项目 > 重新加载项目。该图标出现了片刻,然后在 Visual Studio 2019 中为我清除。这避免了完全重新启动 Visual Studio。
在构建日志中,我碰巧注意到了这一点:
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>
黄色三角形表示包物理文件已消失,并且在硬盘驱动器上不再可用。
这通常发生在对 TFS 中的源代码控制发出 get latest version
请求时,尤其是在使用新机器时,并且您想从 TFS 服务器获取项目代码。
它也可能是由 low quality internet connection
引起的,它几乎总是会导致数据丢失或下载的文件损坏。
https://i.stack.imgur.com/XetyB.png
如果问题是缺少几个包,您可以修改 packages.config
文件并从 packages.config
中删除这些包,然后通过 nuget 包管理器重新安装缺少的包。
但是,如果问题缺少多个包,我用来检索丢失包的最佳和快速方法是:
打开一个新的visual studio实例创建一个具有相同项目类型的新项目解决方案,例如缺少包的项目(例如:带有个人用户帐户的ASP.Net MVC)将新项目的包更新到最新以匹配包版本以前的项目解决方案 打开文件资源管理器并导航到您创建的新解决方案中的 packages 文件夹 通过选择全部复制文件夹 Packages 的所有内容,注意不要复制 Packages 文件夹本身,只复制文件夹内的内容 粘贴您以前的解决方案中的内容(缺少包的解决方案),在包文件夹中覆盖现有项目。转到解决方案资源管理器中的包文件夹并展开它,然后单击刷新按钮以查看许多丢失的包现在显示为没有黄色三角形最后你会得到几个丢失的包,默认情况下不包含您创建新的解决方案,您需要从您的 packages.config 文件(nuget 包管理器的文件)中删除它们以确定已安装的包,并使用 nuget 包管理器将它们安装为新的。
请注意,与项目丢失文件相关的此类问题总是很难修复,并且取决于开发人员的经验,因此不要指望一个简单的解决方案。
关于错误的原因,微软表示这是一个错误,但它可能发生在任何版本的 Visual Studio 上。
对于遇到此问题的任何新人:试试这个,你会记得我:D
转到:Tools
> NuGet Administrator
> Configurations
并确认您已检查 Allow nuget...
和 automatically check...
。
之后,您唯一需要做的就是单击“清除所有 NuGet 缓存”按钮!
而已。您不必手动编辑任何内容;这可能很危险,相信我,我过去常常需要执行这里描述的一些步骤。
如果您想尝试针对此问题的官方 Microsoft 解决方案,可以在此处查看:https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio
但只是清理缓存为我解决了所有问题。
在重命名 .NET Core 3.1 项目时,我刚刚在 VS2019 版本 16.8.3 中遇到了这个问题。重命名项目后立即出现黄色三角形。重建,清理等。没有任何效果。关闭并重新打开解决方案为我解决了这个问题。
奇怪的是,我的 .Net Core 3 项目需要我从项目的上下文中简单地单击“加载项目依赖项”,然后警告图标就消失了。
有用的截图:
https://i.stack.imgur.com/ZOQJf.png
黄色感叹号通常是因为缺少引用或不支持的 dll。如果您克隆存储库,那么许多 nugget 包可能会显示黄色感叹号。如果您已经验证了项目版本并且仍然存在问题,您可以尝试以下解决方案。
在包管理器控制台中,选择您遇到此问题的项目,然后键入以下命令。
Update-Package -Reinstall
这将强制重新安装所有软件包。此命令不会更新 NuGet 包的版本,它只会强制重新安装它们。
该解决方案适用于我的情况。我正在使用 VS2019。希望这对其他人也有帮助。
-卸载项目
-加载项目
这对我有用。
如果你会有所帮助
删除 bin 文件夹和 obj 文件夹
清理项目
最好也从 C:\Users\{user}\.nuget\packages 中删除缓存的包
然后恢复包。那对我有用。
dotnet restore
如果我尝试按照 marked answer 中的说明卸载 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 时,切勿通过项目文件中的
现在警告消失了!
克隆项目时遇到此错误。主要原因是 Nuget 包无法恢复,我通过使 nuget.org 成为唯一的活动资源找到了解决方案。
https://i.stack.imgur.com/iN9XQ.jpg
确保选择 Nuget.org 作为唯一的活动资源。
希望能帮助到你
就像我在另一篇文章中所说的,关于同一问题,这仅用于文档...我知道这已经准备好解决它,我的一个答案已经准备好对此发表一些看法,但是,也许你们中的一些人在场同样的错误,这里列出的这个解决方案都没有解决这个问题......我不知道为什么这个问题出现在 .net 6 的全局安装中,但是,如果你再次出现这个问题,你需要去
C:\Users\YourUsername.nuget
并删除所有内容,不要害怕,这是一个缓存生成器,如果需要它会再次创建。
我刚刚将 Visual Studio 更新到 16.4.4,问题就解决了。参考是固定的,不再有黄色三角形。谢谢。
我在引用的项目依赖项上有三角形。我添加了参考
System.Drawing.dll
.错误列表框中也有警告。删除它为我解决了这个问题。您知道,根据错误列表 System.Drawing.dll
中的警告已转发到 System.Drawing.Common
,您需要通过 Manage NuGet Packages 安装它。现在它可以正常工作了。
转到您的项目/解决方案目录并执行:
dotnet restore
然后你就完成了!
我刚刚将我的本地文件夹映射到 tfs 代码分支并遇到了这些问题,
我不得不查看项目的构建顺序,按顺序一一清理,清理后构建它们。(或者您可以尝试清理整个解决方案并重新构建)
您可以通过 Select the Solution > Project (From Top) > Build Order 查看项目构建顺序
更改输出目录时,我遇到了问题:
<BaseOutputPath>$(SolutionDir)</BaseOutputPath>
一旦我删除了该属性,一切正常! (VS 2022 v17.0 顺便说一句)
我有同样的问题,在敲了我的头两天后,我发现这是因为
不允许长路径
例如,我项目中的两个类库的名称长度 > 或 = 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
以上都不适合我。我在解决方案中有一个项目,在解决方案中与其他项目的依赖关系上带有警告三角形,这导致了 VS 中的许多红色错误。但是,它可以很好地构建、运行和调试。我终于在解决方案树中右键单击项目名称卸载了项目,然后重新加载了项目,现在一切都很开心。感谢 Visual Studio,smh。我正在使用 VS 2019 16.7.1
右键单击解决方案并重建解决方案。它对我有用。
我在引用的项目依赖项上有三角形。我刚刚删除并添加了依赖项以删除三角形。
我发布这个答案只是因为这里没有其他解决方案对我有帮助。
不定期副业成功案例分享