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

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)

Ответы (19)

В журнале сборки случайно заметил следующее:

C: \ Программа Файлы \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ 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)

  • Системная глобализация (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • Сжатие System.IO (> = 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)

  • Системные.Отражение.Примитивы (> = 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, как показано ниже:


  

Я только что обновил Visual Studio до версии 16.4.4, и проблема была решена. Ссылка зафиксирована и больше нет желтого треугольника. Спасибо.

Как ни странно, в моем проекте .Net Core 3 мне нужно было просто щелкнуть «Загрузить зависимости проекта» в контексте проекта, после чего значок предупреждения исчез.

Полезный снимок экрана:

enter image description here

Только для документации для нового человека с этой проблемой попробуйте это, и вы запомните меня: D

Если вы перейдете к: Инструменты> Администратор NuGet> Конфигурации. и у вас отмечены флажки "Разрешить nuget ...." и "автоматически проверять ....".

Единственное, что вам нужно сделать, это нажать кнопку «Очистить все кеши NuGet»

Вот и все, вам не нужно редактировать руководство, думает, что может быть опасно, поверьте мне, мне нужно было выполнить некоторые шаги, чем описывать здесь много времени, и попробовать более 5 шагов официального Документацию Microsoft по этой проблеме вы можете проверить здесь: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatic-using-visual-studio

Но только чистка кеша решает все проблемы

Если я попытаюсь удалить Microsoft.NETCore.Platforms, как указано в помеченном ответе , я получаю следующую ошибку:

Невозможно удалить Microsoft.NETCore.Platforms.1.1.0, потому что от него зависит NETStandard.Library.2.0.3.

Я удалил другие пакеты, но все равно получаю сообщение об ошибке NETSDK1023:

Ссылка на PackageReference для NETStandard.Library была включена в ваш проект. На этот пакет неявно ссылается .NET SDK, и вам обычно не нужно ссылаться на него из вашего проекта. Для получения дополнительной информации см. https://aka.ms/sdkimplicitrefs

Теперь я отредактировал свой .csproj и удалил следующую часть

как указано в https://aka.ms/sdkimplicitrefs в Рекомендации:

При ориентации на .NET Core или .NET Standard никогда не указывайте явную ссылку на Microsoft.NETCore.App или NETStandard.Library через элемент в вашем файле проекта.

Теперь предупреждение пропало!

У меня только что возникла эта проблема в VS2019 версии 16.8.3 при переименовании проекта .NET Core 3.1. Сразу после переименования проекта появились желтые треугольники. Перестроить, почистить и т.д. ничего не получилось. Закрытие и повторное открытие решения решило эту проблему для меня.

Щелкните правой кнопкой мыши «Решение» и «Восстановите решение». У меня сработало.

Перейдите в каталог вашего проекта / решения и выполните:

dotnet restore

Готово!

-загрузить проект

-загрузить проект

У меня это сработало.

Ничего из вышеперечисленного у меня не сработало. У меня был один проект в решении с предупреждающими треугольниками о зависимостях от других проектов в решении, что вызывало множество красных ошибок в VS. Тем не менее, он будет нормально собирать, запускать и отлаживать. Наконец, я выгрузил проект, щелкнув правой кнопкой мыши имя проекта в дереве решений, а затем перезагрузил проект, и теперь все в порядке. Спасибо, Visual Studio, smh. Я использую VS 2019 16.7.1

Если у вас есть значок предупреждения, но нет предупреждений и на самом деле ничего не кажется неправильным, щелкните правой кнопкой мыши проект> Выгрузить проект> щелкните правой кнопкой мыши проект еще раз> Перезагрузить проект. Значок появился на мгновение, а затем был очищен для меня в Visual Studio 2019. Это позволяет избежать полного перезапуска Visual Studio.

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

У меня были треугольники на зависимостях упомянутых проектов. Я просто удалил и добавил зависимости, чтобы удалить треугольник.

Я отправляю этот ответ только потому, что никакие другие решения, представленные здесь, мне не помогли.

У меня были треугольники на зависимостях упомянутых проектов. Я добавил ссылку

 System.Drawing.dll

. Также было предупреждение в списке ошибок. Удаление решило проблему для меня. Вы знаете, согласно предупреждению в списке ошибок System.Drawing.dll перенаправлено на System.Drawing.Common и вам необходимо установить его через Управление пакетами NuGet. Теперь работает исправно.

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

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

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

Поможет если

  • удалить bin папку и obj папку
  • очистить проект
  • Лучше также удалить кешированные пакеты из C: \ Users \ {user} \. Nuget \ packages

Потом восстановите пакеты. это работает для меня.

dotnet restore

Я столкнулся с этой ошибкой при клонировании проекта. основная причина заключалась в том, что пакеты Nuget не могли быть восстановлены, и я нашел решение, сделав nuget.org только активным ресурсом.

enter image description here

Убедитесь, что вы выбрали Nuget.org в качестве только активного ресурса.

Надеюсь, это поможет

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

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

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

enter image description here

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

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

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

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

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

Желтый восклицательный знак обычно из-за отсутствия ссылок или неподдерживаемой библиотеки DLL. Если вы клонируете репозиторий, есть вероятность, что многие пакеты-слепки будут отображать желтый восклицательный знак. Если вы проверили версию проекта, но проблема все еще существует, вы можете попробовать следующее решение.

In the package manager console, select the project in which you are facing this problem and then type the following command.

Update-Package -Reinstall

Это заставит переустановить все пакеты. Эта команда не обновит версию пакетов NuGet, она просто принудительно переустановит их.

Это решение сработало в моем случае. Я использую VS2019. Надеюсь, это поможет и другим.

2022 WebDevInsider