Warning: Все проекты, ссылающиеся на MyProject.csproj, должны установить пакет nuget Microsoft.Bcl.Build

У меня есть приложение ASP.NET MVC 4, разработанное в VS 2012. Приложение состоит из основного проекта (MyProject), проекта unit-test (MyProject.Tests), проекта развертывания Azure (MyProject.Azure) и пара общих проектов библиотеки.

Когда я нажимаю правой кнопкой мыши на решение или основной проект и выбираю "Управление пакетами NuGet", я вижу кучу обновлений Microsoft, которые, очевидно, стали доступны за последний месяц или около того. Если я нажму кнопку "Обновить все", обновления, по-видимому, будут установлены без каких-либо очевидных проблем, но когда я создам решение, я получаю это сообщение об ошибке. TWICE:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Итак, у меня есть два проекта, которые ссылаются на MyProject: MyProject.Tests и MyProject.Azure. Я могу щелкнуть правой кнопкой мыши MyProject.Tests, выбрать ManageNuGet Packages и добавить Microsoft.Bcl.Build. Это избавляет от одного из двух предупреждений. Но VS не дает мне возможность управлять пакетами NuGet для проекта MyProject.Azure.

Как добавить пакет Microsoft.Bcl.Build в проект развертывания Azure?

EDIT:

Благодаря пользователю swell я теперь знаю, что проблема Microsoft Connect для этой проблемы была открыта .

Ответ 1

Если вы дважды щелкните предупреждение, оно дает инструкции по отключению предупреждения.

Безопасно отключать ссылки на проект из проектов, которые еще не поддерживают Nuget.

См. ниже раздел в жирный, скопированный из Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageReferences

Эта ссылка может быть отключена для ссылки на проект, установив для ссылки SkipValidatePackageReferences = true:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

Ответ 2

Ответ, предоставленный TheESJ, верен, однако формулировка мне не была понятна. Поскольку я не могу прокомментировать ответ, я предоставлю здесь более подробную информацию. В частности, я столкнулся с этой проблемой с проектом Azure, и для предупреждения об этом потребовалось следующее обходное решение:

Когда вы дважды щелкните предупреждение в VisualStudio, вы попадете на цель BclBuildValidateNugetPackageReferences в файле Microsoft.BclBuild.targets. Над фактическим целевым элементом вы должны найти большой блок комментариев, который говорит об отключении проверки ссылок проекта. Поскольку проекты Azure не могут иметь библиографических ссылок, для тех проектов Azure невозможно выполнить требования этой конкретной цели сборки.

Решение? Отключите проверку ссылок из проекта Azure, так как невозможно добавить ссылку на пакет nuget.

Пример

Итак, предположим, что у нас есть два проекта: MyAzureProject.ccproj, который ссылается на MyProject.csproj. Выполните следующие действия:

  • Щелкните правой кнопкой мыши на "MyAzureProject" в обозревателе решений и выберите "Редактировать файл проекта".
  • Найдите ссылку на проект "MyProject". Он должен выглядеть примерно так:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  • Добавьте следующий элемент внутри элемента ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  • Теперь ваша ссылка на проект будет выглядеть следующим образом:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  • Щелкните правой кнопкой мыши на "MyAzureProject" в обозревателе решений и выберите "Обновить проект".

Теперь вы должны иметь возможность перестроить, и ошибка должна исчезнуть.

Ответ 3

Я столкнулся с той же проблемой и пытался обновить Microsoft.Bcl.Build.targets; что не помогло.

После некоторого исследования выяснилось, что файл .csproj проекта Azure Service должен быть изменен, чтобы включить <Properties>SkipValidatePackageReferences=true</Properties>.

Это не было видно из ответа @THEESJ и поэтому решил опубликовать отдельный ответ. Благодаря @THEESJ.

Ответ 4

Я сталкивался с этой проблемой несколько раз, и метод Properties действительно работает, но когда имеешь дело с проектом Wix, мне пришлось сделать следующее:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Когда я использовал узел Properties Xml, я получил новую ошибку:

Свойство OutputPath не установлено для проекта "MyInstallerProject.csproj". Пожалуйста, убедитесь, что вы указали правильную комбинацию конфигурации и платформы для этого проекта. Configuration = 'Debug' Platform = 'x86'. Эта ошибка также может появляться, если какой-либо другой проект пытается следовать ссылке проекта на проект для этого проекта, этот проект был выгружен или не включен в решение, а ссылочный проект не создается с использованием того же или эквивалентного Конфигурация или Платформа.