What do Yellow Warning Triangles mean on Dependenc

2019-01-27 20:32发布

问题:

I have just converted my PCL library to a new .Net Standard library and I have some Yellow Warning triangles on my Dependencies shown below:

During the conversion it brought all nuget packages across including dependencies so it could be dulicates.

How do I find out what the Yellow warning triangles represent?

EDIT

Build Logs:

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)

回答1:

In the build Log I happened to notice this:

C:\Program Files\dotnet\sdk\2.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

I therefore went and uninstalled all packages that were listed as dependencies for the .Net Standard nuget listed here:

.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)

And the yellow warnings disappeared.

From here: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

I have also found you can use the NoWarn property like below:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>


回答2:

run dotnet restore before you do any complicated manipulation, you are going to be provided with a lot more info than in the error window or solution explorer.

You can run this command in the Package Manager Console:

Tools > NuGet Package Manager > Package Manager Console



回答3:

The yellow triangle means that the package physical file(s) is gone and no longer available on the HDD.

If the problem is missing a couple of packages, you can modify the packages.config file and remove these packages from the packages.config and re-install the missing packages via nuget packages manager.

But if the problem is missing more than a few packages, the best and fasted way I use to retrieve missing packages is by:

  1. Opening a new instance of visual studio
  2. Create a new project solution with same project type like the one with missing packages (Example: ASP.Net MVC with Individual User Account)
  3. Update the packages of the new project to the latest to match the packages versions of the previous project solution
  4. Open the file explorer and navigate to packages folder in the new solution that you created
  5. Copy all contents of folder Packages by selecting all, Note do NOT copy the Packages folder itself only the contents inside the folder
  6. Paste that in your previous solution ( solution with the missing packages), in the Packages folder with overwrite existing items.
  7. Go to your packages folder in the solution explorer and expand it, then click the refresh button to see that many of missing packages are now showing without yellow triangle
  8. Lastly you will end up with a couple of missing packages, that are not included by default when you create new solution, you need to remove them from your packages.config file (the file which nuget package managers) reads to determine installed packages, and install those as new using the nuget package manager.

Note such problems related to missing files from projects are always hard to fix, and depends on developer experience, so don't expect an easy solution for this one.

On the cause of the error,Microsoft says it is a bug, bust it is can happen on any version of Visual Studio.



回答4:

I had this problem and the solution was to update NuGet Packages.

Tools menu -> NuGet Package Manager -> Manage Nuget Packages for Solution. When this menu appears, click on the Update tab and click the Update All button.