it-roy-ru.com

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

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

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

Все мои 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\хххххх\ххххх-XXXXXXX

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

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

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

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

23
Thierry

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

Как уже упоминалось @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.BuildNuget. В моем случае я просто удалил первый:

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

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

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

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

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

22
Thierry

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

  1. Перезапустите Visual Studio
50
pimbrouwers

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

5
Remco

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

2
Jason Ho
  1. Скопируйте файлы вашего проекта в другую папку
  2. Удалить папку с проектом решения
  3. Создать новый проект с тем же именем
  4. Скопируйте файлы из шага 1 в новый проект
  5. Восстановить пакеты
0
shop350

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

 Resolve warning references error

0
Nehoss