Не используя восстановление пакета, но все равно получая "необходимо установить пакет nuget Microsoft.Bcl.Build",

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

Несколько проектов в решении (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 → Package Manager → Общие настройки, кстати. Это не помогает (и даже если бы это было так, это было бы нежелательно - я использую восстановление пакета во всем остальном, над чем я работаю).

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

Однако, похоже, что некоторые другие пакеты 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

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

Ответ 2

Недавно у нас была такая же проблема. Используя 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 проекта B. были добавлены следующие строки:

<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')" />