.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 проблемы:
Ниже приведен пример неисправного
<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 в новый проект
- Восстановить пакеты