2016-05-13 5 views
17

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

VS .Net References with yellow triangle Why do I get a warning icon when I add a reference to an MEF plugin project? The exclamation mark in the yellow triangle icon (inside Solution Explorer)

Мои 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> 

Моего physcial путь проекта:

C: \ XXXX \ хххххх \ хххого-ххххххе

поэтому, принимая пример 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%, как и ожидалось.

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

+0

При выборе библиотеки с восклицанием и проверить свойства панели он говорит вам что-нибудь полезное? – Gusman

+0

Посмотрите в окне «Список ошибок», некоторые факторы, которые анализатор IntelliSense имеет полезное предупреждение. –

+0

@ Gusman - Не вещь, но я действительно сравнил ее с моим рабочим проектом и, как ни странно, в рабочем проекте у него есть «Копировать локальную» и «Специфическую версию», установленную в true, в то время как в нерабочем проекте оба для этих свойств установлено значение false. Кроме того, свойства «Runtime Version» и «Version» устанавливаются в рабочей копии, но не в другой! Я попытаюсь изменить «Копировать локальную» и «Специфическую версию» на true, но я думаю, что для этого есть нечто большее, чем это, если честно. – Thierry

ответ

19

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

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

и при условии ссылки на эту статью Diagnosing Project System Build Errors

После следуя инструкции и осматривал многочисленные файлы, оканчивающиеся на 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, отмеченные желтым треугольником.

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

+0

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

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

Какой это год? И да, иногда это работает. Значит, проект недостаточно зрелый. –

4

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

+0

Это сработало для меня, спасибо! – neo

+0

Гак, это сработало и для меня .. Но почему!?!? – ttugates

+0

Странно, это сработало! –

23

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

  1. Restart Visual Studio
+4

ты фриканец, издевающийся надо мной ... Я весь день пробовал проблемы с выпуском ядра 1.0, и когда я перезапустил VS, все мои ссылки были в порядке ... – Rikon

+2

@Rikon жаль слышать о вашей удаче! не могу подсчитать количество раз, когда я был в одной лодке ... Привычки пары, с которыми я недавно попал, закрывают вкладки и среды несколько раз. Предотвращает такие царапины для головы, и я считаю, что моя машина работает немного лучше. – pimbrouwers

+2

просто помог мне с пакетом BuildBundlerMinifier – Sergi0

1

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