2013-11-21 1 views
12

Я работаю над проектом, который использует nuget, но не использует восстановление пакета. (Это решение вне моего контроля, так что любые ответы, связанные с возможностью восстановления пакета, не являются теми, которые я смогу использовать.)Не использовать восстановление пакета, но все равно получение «должен установить пакет nuget Microsoft.Bcl.Build»

Несколько проектов в решении (4 из в общей сложности 34; в WinJS магазин приложений проекта, два обычных библиотеки классов .NET, и один из моего Azure облачных проектов) сообщает это позорное предупреждение:

...packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets(225,5): warning : All projects referencing Valhalla.Consumer.Core.csproj must install nuget package Microsoft.Bcl.Build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317569.

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

Я попытался отключить восстановление пакетов в Options -> Manager Package -> Общие настройки, кстати. Это не помогает (и даже если бы это было так, было бы нежелательно - я использую восстановление пакета во всем остальном, над чем я работаю).

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

Однако, похоже, что некоторые другие пакеты nuget заставляют вас зависеть от этого. У меня есть компонент Windows Runtime Component, который использует Microsoft.Bcl, пакет nuget, который по какой-то причине имеет зависимость от Microsoft.Bcl.Build. (Visual Studio, казалось, добавила мне пакет Microsoft.Bcl, когда я создал проект. Предположительно, это необходимо.) Другие проекты, похоже, приобретают зависимость от Microsoft.Bcl.Build через клиентские библиотеки HTTP.

Похоже, что некоторые общие пакеты nuget, похоже, вынуждают зависимость от Microsoft.Bcl.Build независимо от того, используете ли вы восстановление пакета.

Это было бы хорошо, если бы вы могли устранить это предупреждение, просто добавив соответствующий пакет ко всем проектам, которые получают это предупреждение. Но досадно то, что даже если я добавлю Microsoft.Bcl.Build пакет к потребляющим компонентам (например, моему приложению WinJS Window Store), я все равно получаю это предупреждение! (Поэтому он продолжает жаловаться, что мне нужно установить пакет nuget даже после того, как я его установил.)

Кто-нибудь знает, как устранить это предупреждение в этой ситуации? Выполнение того, что он мне просит, кажется недостаточным. Чего не хватает?

+1

ли вы попробовать с помощью свойства SkipValidatePackageReferences в проекте, как предложено в Файл Microsoft.Bcl.Build.targets? –

+0

Хотя это избавится от него, разве это не предотвратит законные предупреждения? Если проект U использует проект P, то U должен иметь все те же пакеты nuget, что и P. Обычно nuget будет проверять и сообщать вам, если вам что-то не хватает, но этот параметр отключает эту проверку. Я бы хотел получить предупреждения, когда мне действительно не хватает пакета, но не получаю предупреждения о Microsoft.Bcl.Build, если у меня есть ссылка на это. –

+0

Dunno, если включен факт восстановления пакета OOTB в v2.7 + из NuGet (Know zilch of 'Microsoft.Bcl.Build') –

ответ

7

У меня была та же проблема. Обновление пакета Microsoft.Bcl.Build с 1.0.13 до 1.0.14 решило мою проблему.

+0

Мне пришлось обновить версии VS –

+0

Я уже на 1.0.14 с обновлением сообщества vs 2013 4, и я получил предупреждение. Что мне делать ? – Julian50

+0

@FrankSposaro какая версия сделала для установки? – Julian50

4

У нас недавно была такая же проблема. Используя Nuget 2.8, BCL build 1.0.14, BCL 1.1.9, у нас был проект A с использованием сборки BCL, на который ссылался другой проект B.

Краткая история: сборник проекта B дал указанную ошибку, хотя упакованные были добавлено к нему. Решение заключалось в том, чтобы удалить пакеты и повторно добавить их. Мы закончили это для проектов A и B.

Я считаю, что причиной проблемы было несоответствие в версиях. Первоначальный проект, на который ссылается BCL 1.1.8 (последняя версия, когда он был создан), был тогда, когда проект B автоматически использовал более поздний BCL 1.1.9.

Я не уверен, что это актуально, но в первый раз мы добавили пакеты с помощью диспетчера пакетов project-> NuGet, а в 2-й раз мы использовали консоль NuGet (Tools-> Nuget-> console).

удалить, добавить вызвало явное различие в csproj проекта Б. были добавлены следующие строки:

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> 

Смежные вопросы