Что означают желтые предупреждающие треугольники о зависимостях в Visual Studio 2017?
Я только что преобразовал свою библиотеку PCL в новую библиотеку.Net Standard, и у меня есть некоторые треугольники желтого предупреждения в моих зависимостях, показанных ниже:
Во время преобразования он привел все пакеты 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
которое почти всегда приводит к потере данных или повреждению загруженных файлов.
Если в задаче отсутствует пара пакетов, вы можете изменить файл packages.config
и удалить эти пакеты из packages.config
и переустановить отсутствующие пакеты с помощью диспетчера пакетов nuget.
Но если проблема не в нескольких пакетах, лучший и быстрый способ использовать отсутствующие пакеты - это:
- Открытие нового экземпляра визуальной студии
- Создайте новое решение для проекта с таким же типом проекта, как и с отсутствующими пакетами (Пример: ASP.Net MVC с индивидуальной учетной записью пользователя)
- Обновите пакеты нового проекта до последних, чтобы они соответствовали версиям пакетов предыдущего проекта.
- Откройте проводник и перейдите в папку с пакетами в новом решении, которое вы создали.
- Скопируйте все содержимое папки
Packages
, выбрав все. Примечание. НЕ копируйте саму папку Packages, только содержимое внутри папки. - Вставьте его в свое предыдущее решение (решение с отсутствующими пакетами) в папку "
Packages
" с перезаписью существующих элементов. - Перейдите в папку пакетов в обозревателе решений и разверните ее, затем нажмите кнопку обновления, чтобы увидеть, что многие из отсутствующих пакетов теперь отображаются без желтого треугольника.
- Наконец, вы получите пару отсутствующих пакетов, которые не включаются по умолчанию при создании нового решения, вам необходимо удалить их из файла packages.config (файла, который менеджеры пакетов nuget) считывают для определения установленных пакетов, и установите их как новые, используя менеджер пакетов nuget.
Обратите внимание, что такие проблемы, связанные с отсутствием файлов в проектах, всегда трудно исправить, и они зависят от опыта разработчика, поэтому не ждите от этого простого решения.
Что касается причины ошибки, Microsoft говорит, что это ошибка, но она может возникнуть в любой версии Visual Studio.
Ответ 4
Как бы банально это не звучало, попробуйте восстановить, а затем перезапустить VS - и продолжайте свой день :)
Ответ 5
Там может быть 1 пакет, который может привести к тому, что все остальные не будут загружены. попробуйте комментировать пакеты из .csproj один за другим и выяснить, какой из них является проблемой, чтобы сузить его.
Ответ 6
Если у вас нет проблем, обновите все пакеты NuGet, которые могут решить эту проблему.
Инструменты menu → Диспетчер пакетов NuGet → Управление пакетами Nuget для решения. Когда появится это меню, щелкните вкладку Обновить и нажмите кнопку Обновить все.