Ссылки .Net 2015 с желтым треугольником для пакетов Nuget в переносимых библиотеках

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

Ссылки VS .Net с желтым треугольником Почему я получаю значок предупреждения когда я добавляю ссылку на проект подключаемого модуля MEF? Восклицательный знак в значке желтого треугольника (внутри обозревателя решений)

Мои 5 переносимых библиотек определенно ориентированы на одни и те же фреймворки (я проверял и перепроверял, так как это было одним из предложений!):

  • .NET Framework 4.5
  • Ядро ASP.NET 1.0
  • Windows Phone 8
  • Windows Phone 8.1
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS (классическая версия)

Что я пробовал/сделал до сих пор:

  • Удалите ссылки на пакеты Nuget вручную из всех проектов.
  • Проверьте каждый .csproj и убедитесь, что ссылки действительно удалены.
  • Удалите папку пакетов в корне моего решения
  • Пробовал переустанавливать все пакеты через консольный менеджер. Ошибки нет, но желтый треугольник по-прежнему отображается.
  • Пытался переустановить все пакеты через менеджер Nuget. Ошибки нет, но желтый треугольник по-прежнему отображается.

Вот раздел одной из моих переносимых библиотек классов:

<ItemGroup>
    <Reference Include="crypto">
      <HintPath>..\..\..\packages\Portable.BouncyCastle.1.8.1\lib\portable-
        net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10
        \crypto.dll
      </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\portable-
      net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Extensions">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Primitives">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
  </HintPath>
  <Private>True</Private>
</Reference>

My physcial project path is:

C:\xxxx\xxxxxx\xxxxx-xxxxxxx

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

C:\xxxx\xxxxxx\xxxxx-xxxxxxx\packages\Portable.BouncyCastle.1.8.1\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10\crypto.dll

Кажется, это проблема только в моих портативных библиотеках, поскольку я переустановил все пакеты Nuget в своем решении uwp, и все они работали должным образом. Разочаровывает то, что мой проект, который все еще находится в исходном месте, работает отлично. Я удалил пакеты и переустановил их, и все работает на 100%, как и ожидалось.

У кого-нибудь есть другие предложения?


person Thierry    schedule 13.05.2016    source источник
comment
Если вы выберете библиотеки с восклицательным знаком и проверите панель свойств, это скажет вам что-нибудь полезное?   -  person Gusman    schedule 13.05.2016
comment
Посмотрите в окне списка ошибок, некоторые шансы, что анализатор IntelliSense имеет полезное предупреждение.   -  person Hans Passant    schedule 13.05.2016
comment
@Gusman - ничего, но я сравнил его с моим рабочим проектом, и, как ни странно, в рабочем проекте для параметра «Копировать локальную и конкретную версию» установлено значение «истина», а в нерабочем проекте для обоих этих свойств установлено значение ложный. Также свойства Runtime Version и Version устанавливаются в рабочей копии, а не в другой! Я попытаюсь изменить Копировать локальную и конкретную версию на true, но я думаю, что это нечто большее, если честно.   -  person Thierry    schedule 13.05.2016
comment
Хм, это тогда потому, что он вообще не может загрузиться. Как говорится в упомянутой статье, это обычно происходит из-за того, что выбрана неправильная целевая платформа. Я вижу, вы это проверили, но стоило бы протестировать все доступные возможности, просто возьмите один из проектов с проблемой и протестируйте изменение версии фреймворка и профиля PCL, это ваш лучший выбор.   -  person Gusman    schedule 13.05.2016
comment
@Gusman У меня были отключены предупреждения, и когда я их проверил, я обнаружил следующее: Предупреждение: IDE0006 — ошибка при загрузке проекта. Некоторые функции проекта, такие как полный анализ решения для неудавшегося проекта и проектов, которые зависят от него, были отключены. Я предполагаю, что это как-то связано с этим, и в настоящее время я читаю больше об этом на github.com/dotnet/roslyn/wiki/. Если нет, то попробую то, что вы предложили.   -  person Thierry    schedule 13.05.2016
comment
@Gusman Я понял это! Я опубликую ответ сейчас.   -  person Thierry    schedule 13.05.2016
comment
Хммм, небольшой вопрос, вы удалили пакет bcl из ссылок или из менеджера пакетов nuget?   -  person Gusman    schedule 13.05.2016
comment
@Gusman Все мои пакеты Nuget, включая bcl, были удалены с помощью диспетчера пакетов Nuget, а также опробованы через консоль Nuget. Очень странно ладно!   -  person Thierry    schedule 13.05.2016
comment
Ну да, действительно странно, рад, что у вас все получилось!   -  person Gusman    schedule 13.05.2016


Ответы (7)


Если вы не получили ошибок вывода во время установки и нет предупреждений при сборке/перестроении. Просто:

  1. Перезапустите Visual Studio.
person pim    schedule 25.07.2017
comment
вы чертовски издеваетесь надо мной ... Я весь день преследовал проблемы с ядром 1.0, и когда я перезапустил VS, все мои ссылки пришли просто отлично ... - person Rikon; 17.10.2017
comment
@Rikon жаль слышать о твоей удаче! не могу сосчитать, сколько раз я был в одной лодке ... пара привычек, которые я приобрел в последнее время, - это довольно частое закрытие вкладок и сред. Предотвращает подобные царапины на голове, и я считаю, что моя машина работает немного лучше. - person pim; 17.10.2017
comment
только что помог мне с пакетом BuildBundlerMinifier - person Sergi0; 07.12.2017
comment
@Серги0 То же самое. А также JwtBearer... перезапуск ide сработал. Мне нравятся мои вкладки и приложения Chrome, @pimbrouwers! Пожалуйста, не забирайте их! :-( - person adamgede; 23.01.2018
comment
@adamgede Так рад слышать, что это помогло вам. Я должен был быть более ясным в своих комментариях. Когда я говорю вкладки, я имею в виду VS вкладки. Когда я говорю о среде, я имею в виду различные экземпляры VS, которые у меня открыты. - person pim; 23.01.2018
comment
Это сработало после того, как все версии .NET Framework моего проекта были одинаковыми, пакеты Nuget были переустановлены и, наконец, после долгих размышлений, просто перезапустили Visual Studio. Если вы используете что-то вроде Resharper, также очистите кеши. - person Lunster; 03.07.2018
comment
Такое простое решение надоедливой проблемы. - person Heike; 10.01.2019
comment
Как это работает?! Ах, как это раздражает, но большое спасибо за это. - person Ben Sampica; 26.03.2019
comment
@BenSampica это действительно расстраивает. Если вы посмотрите на окно вывода, вы можете получить больше информации о том, что может быть не так. Также может случиться так, что перезапуск VS сбрасывает кеш символов (хотя это полное предположение). - person pim; 26.03.2019
comment
Знаешь... после 20 лет существования Visual Studio... можно было бы подумать, что такие мелочи уже проработаны (к настоящему времени) - person Prisoner ZERO; 26.05.2019

Я понял в чем проблема!

Как уже упоминалось @Gusman, у меня было отключено предупреждение. Как только я включил их, для моих портативных проектов появилось следующее:

Warning: IDE0006 - Error encountered while loading the project. Some project
features, such as full solution analysis for the failed project and projects
that depend on it, have been disabled

и предоставил ссылку на эту статью Диагностика ошибок сборки системы проекта< /а>

Следуя предоставленным инструкциям и проверив многочисленные файлы, оканчивающиеся на designtime.log, я заметил, что все они имеют FAIL, относящийся к пакету Nuget, но, как уже упоминалось, я удалил их все из своего различного проекта, поэтому я пошел перепроверить .csproj от одного из них, и именно тогда я заметил проблему (ы)!

На самом деле есть 2 проблемы:

  1. Ссылка Microsoft.BCL.Build для Nuget не удаляется должным образом!!

  2. При повторном добавлении пакета Microsoft.BCL.Build Nuget он неправильно устанавливает путь в .csproj

Ниже приведен пример неисправности:

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets" Condition="Exists
       ('..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21
        \build\Microsoft.Bcl.Build.targets'))" />
    <Error Condition="!Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\..\..\packages\Microsoft.Bcl.Build.1.0.21\
        build\Microsoft.Bcl.Build.targets'))" />
</Target>

Как видите, первой строки, т. е. <Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21>, не должно быть, и все же она остается в проекте, хотя Microsoft.BCL.Build была удалена.

Если вам это нужно, оставьте это и исправьте вторую запись, как это сделал я. Как видите, есть две записи, проверяющие наличие пакета Microsoft.BCL.Build Nuget. В моем случае я просто удалил первый:

`<Error Condition="!Exists('..\packages\`

и сохранил этот:

`<Error Condition="!Exists('..\..\..\packages\`

Закончив редактирование .csproj, я перезагрузил проект в своем решении, и проблема не только с Microsoft.BCL.Build была решена, но и со всеми другими зависимостями Nuget, отмеченными желтым треугольником.

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

person Thierry    schedule 13.05.2016
comment
Короче говоря, проверьте файл проекта и убедитесь, что ничто не мешает сборке. У меня было давнее требование времени выполнения Antlr, которое было удалено. - person nh43de; 09.08.2017
comment
Это было решением моей проблемы: P - person Gustavo Baiocchi Costa; 14.06.2018

Я столкнулся с той же проблемой в решении vs2017 с двумя проектами для фреймворка DotNetCoreApp 1.1. Все мои посылки отмечены восклицательным знаком/желтыми треугольниками. Как только я запустил vs2017 в качестве администратора, проблема была решена.

person R. van Diesen    schedule 21.07.2017

У меня была такая же проблема, когда я клонировал проект на свой ноутбук с GitHub. На моих EntityFramework и AspNet.Identity также отображаются желтые треугольники. Что я сделал для решения проблемы в моем случае, так это удалил папку пакетов (которая содержит пакеты Nuget) и восстановил пакеты после открытия проекта. В результате эти предупреждения были отключены после перезапуска VS2017.

person Jason Ho    schedule 05.08.2017

Я знаю, что это старый пост, но недавно я страдал от этой ошибки предупреждения после смены круга. Я работал с TFS (в Visual Studio 2017), и вдруг все мои ссылки получили значок предупреждения. Я обнаружил, что у меня работает следующее: перейдите в браузер объектов, затем выберите поле со списком «Все компоненты» и, наконец, выберите свою структуру. Для меня он работал как зачарованный.

Устранить ошибку ссылок предупреждений

person Nehoss    schedule 15.05.2018

Вы можете проверить мой ответ по соответствующей теме здесь, потому что ответ на эту тему - это опасный способ делать что-то, особенно если у вас есть проект в производственной среде: https://stackoverflow.com/a/59704420/7969733

Просто для документации для новых людей с этой проблемой попробуйте это, и вы запомните меня :D

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

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

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

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

person sgrysoft    schedule 12.01.2020

  1. Скопируйте файлы проекта в другую папку
  2. Удалить папку с проектом решения
  3. Создать новый проект с тем же именем
  4. Скопируйте файлы из шага 1 в новый проект
  5. Восстановить пакеты
person shop350    schedule 01.06.2017
comment
Какой это год? И да, иногда это работает. Значит проект не доработан.. - person Juan Carlos; 17.11.2017