Что означают желтые предупреждающие треугольники о зависимостях в Visual Studio 2017?

Я только что преобразовал свою библиотеку PCL в новую библиотеку.Net Standard, и у меня есть некоторые треугольники желтого предупреждения в моих зависимостях, показанных ниже:

enter image description here

Во время преобразования он привел все пакеты 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)

Ответ 1

В журнале сборки я случайно заметил это:

C:\Program Файлы\DotNet\SDK\2.0.2\SDKs\Microsoft.NET.Sdk\построить\Microsoft.NET.Sdk.DefaultItems.targets(199,5): Предупреждение: PackageReference для "NETStandard.Library" был включен в ваш проект. На этот пакет неявно ссылается .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>

Ответ 2

dotnet restore перед выполнением каких-либо сложных манипуляций, вам будет предоставлено гораздо больше информации, чем в окне ошибок или в обозревателе решений.

Вы можете запустить эту команду в консоли диспетчера пакетов:

Инструменты> Диспетчер пакетов NuGet> Консоль диспетчера пакетов

Ответ 3

Желтый треугольник означает, что физические файлы пакета исчезли и больше не доступны на жестком диске.

Обычно это происходит при выдаче запроса на get latest version управления исходным кодом в TFS, особенно при использовании нового компьютера, и вы хотите получить код проекта с сервера TFS.

Это также может быть вызвано low quality internet connection которое почти всегда приводит к потере данных или повреждению загруженных файлов.

enter image description here

Если в задаче отсутствует пара пакетов, вы можете изменить файл packages.config и удалить эти пакеты из packages.config и переустановить отсутствующие пакеты с помощью диспетчера пакетов nuget.

Но если проблема не в нескольких пакетах, лучший и быстрый способ использовать отсутствующие пакеты - это:

  1. Открытие нового экземпляра визуальной студии
  2. Создайте новое решение для проекта с таким же типом проекта, как и с отсутствующими пакетами (Пример: ASP.Net MVC с индивидуальной учетной записью пользователя)
  3. Обновите пакеты нового проекта до последних, чтобы они соответствовали версиям пакетов предыдущего проекта.
  4. Откройте проводник и перейдите в папку с пакетами в новом решении, которое вы создали.
  5. Скопируйте все содержимое папки Packages, выбрав все. Примечание. НЕ копируйте саму папку Packages, только содержимое внутри папки.
  6. Вставьте его в свое предыдущее решение (решение с отсутствующими пакетами) в папку " Packages " с перезаписью существующих элементов.
  7. Перейдите в папку пакетов в обозревателе решений и разверните ее, затем нажмите кнопку обновления, чтобы увидеть, что многие из отсутствующих пакетов теперь отображаются без желтого треугольника.
  8. Наконец, вы получите пару отсутствующих пакетов, которые не включаются по умолчанию при создании нового решения, вам необходимо удалить их из файла packages.config (файла, который менеджеры пакетов nuget) считывают для определения установленных пакетов, и установите их как новые, используя менеджер пакетов nuget.

Обратите внимание, что такие проблемы, связанные с отсутствием файлов в проектах, всегда трудно исправить, и они зависят от опыта разработчика, поэтому не ждите от этого простого решения.

Что касается причины ошибки, Microsoft говорит, что это ошибка, но она может возникнуть в любой версии Visual Studio.

Ответ 4

Как бы банально это не звучало, попробуйте восстановить, а затем перезапустить VS - и продолжайте свой день :)

Ответ 5

Там может быть 1 пакет, который может привести к тому, что все остальные не будут загружены. попробуйте комментировать пакеты из .csproj один за другим и выяснить, какой из них является проблемой, чтобы сузить его.

Ответ 6

Если у вас нет проблем, обновите все пакеты NuGet, которые могут решить эту проблему.

Инструменты menu → Диспетчер пакетов NuGetУправление пакетами Nuget для решения. Когда появится это меню, щелкните вкладку Обновить и нажмите кнопку Обновить все.