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

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

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

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

  • .NET Framework 4.5
  • ASP.NET Core 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>

Мой физический путь проекта:

C:\XXXX\XXXXXX\ххххх-XXXXXXX

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

C:\XXXX\хххххх\ххххх-ххххххх\пакеты\Portable.BouncyCastle.1.8.1\Lib\портативного NET4 + sl5 + КР8 + Win8 + wpa81 + MonoTouch10 + MonoAndroid10 + xamarinmac20 + xamarinios10\crypto.dll

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

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

Ответы

Ответ 1

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

Как упоминалось в @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 проблемы:

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

  • При повторном добавлении пакета 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, отмеченные желтым треугольником.

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

Ответ 2

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

  • Перезапустить Visual Studio

Ответ 3

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

Ответ 4

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

Ответ 5

  • Скопируйте файлы проекта в другую папку
  • Удалить папку с проектом решения
  • Создайте новый проект с тем же именем
  • Скопировать файлы с шага 1 в новый проект
  • Восстановить пакеты