попередження: Усі проекти, що посилаються на MyProject.csproj, повинні встановлювати nuget-пакет Microsoft.Bcl.Build


90

У мене є програма ASP.NET MVC 4, розроблена в VS 2012. Додаток складається з основного проекту (MyProject), проекту модульного тесту (MyProject.Tests), проекту розгортання Azure (MyProject.Azure) і пари загальні бібліотечні проекти.

Коли я клацаю правою кнопкою миші рішення або основний проект і вибираю Керувати пакетами NuGet, я бачу купу оновлень Microsoft, які, очевидно, стали доступними протягом останнього місяця чи близько того. Якщо я натискаю кнопку «Оновити все», тоді оновлення, очевидно, встановлюються без явних проблем, але коли я будую рішення, я отримую таке повідомлення про помилку ДВАЖИМ:

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?

РЕДАГУВАТИ:

Завдяки роздуті користувачам , я тепер знаю, що тут відкрито проблему Microsoft Connect для цієї проблеми .


2
Дякуємо за посилання на проблему з підключенням, це дратує проблема.
Пол Кейстер

1
Пов’язане з попередженням під час створення проекту розгортання, також містить помилку, яка викликає помилкове попередження під час публікації проекту. Про помилку, пов’язану з публікацією, також повідомляється на Connect . Я не знаю способу обходу.
Едвард Брей,

3
Те саме трапляється зі мною для проектів WiX, які мають посилання на інші проекти (з метою збирання результатів проекту, що називається "тепло"). Для проекту інсталятора WiX немає сенсу встановлювати пакети NuGet! Ага !!
Jaans

1
Тепер посилання на проблему з підключенням повертає 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Райан Гейтс,

Відповіді:


54

Якщо ви двічі клацнете на попередженні, воно дасть вам вказівки щодо вимкнення попередження.

Безпечно вимкнути посилання на проекти для проектів, які ще не підтримують 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>

4
Артур, ти можеш спробувати встановити значення метаданих AdditionalPropertes замість Властивості?
TheESJ

5
@TheESJ У мене була ця проблема з проектом WiX, і схоже на те, що встановлення AdditionalProperties замість Properties працює. Мені цікаво знати, чому все ж
lc.

3
Це працює лише для побудови рішення, але коли ви фактично використовуєте "Запустити" з проектом azure як свій проект запуску, ви знову побачите попередження.
eoleary

2
Не працюйте навіть над побудовою. VS 2015 Community Edition.
Артем

2
Не працював у VS2015 Professional. У мене така сама проблема, коли я додав цей рядок.
aclalex

63

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

Двічі клацнувши попередження у VisualStudio, ви перейдете до цілі BclBuildValidateNugetPackageReferences у файлі Microsoft.BclBuild.targets. Над фактичним цільовим елементом ви повинні знайти великий блок коментарів, який розповідає про вимкнення перевірки посилань на проект. Оскільки проекти Azure не можуть мати посилань на бібліотеки, ці проекти Azure не можуть виконати вимоги цієї конкретної цілі побудови.

Рішення? Вимкніть перевірку посилань у проекті Azure, оскільки насправді неможливо додати посилання на пакет nuget.

ПРИКЛАД

Отже, припустимо, у нас є два проекти: MyAzureProject.ccproj, який посилається на MyProject.csproj . Виконайте такі дії:

  1. Клацніть правою кнопкою миші на "MyAzureProject" у Провіднику рішень і виберіть "Редагувати файл проекту".
  2. Знайдіть посилання на проект "MyProject". Це має виглядати приблизно так:

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

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Тепер посилання на ваш проект має виглядати так:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Клацніть правою кнопкою миші на "MyAzureProject" у Провіднику рішень і виберіть "Перезавантажити проект".

Тепер ви зможете відновити, і помилка повинна бути знищена.


17
У моїй версії VS я повинен спочатку клацнути правою кнопкою миші та "Вивантажити проект", перш ніж я можу клацнути правою кнопкою миші, щоб відредагувати файл проекту
pius

2
Ви мали на увазі, MyAzureProject.ccprojа не MyAzureProject.csproj?
Едвард Брей,

Це працює лише в тому випадку, якщо я додаю "<Properties> SkipValidatePackageReferences = true </Properties>" у файл із посиланням на проект * .csproj. Просто редагування * .ccproj не працює.
alexey

1
@pius Це невелика особливість, але є «Edit Project File» варіант контекстного меню в розділ «Команда харчування» в Productivity Power Tools , доступний для кількох видань VS. Це розвантажить проект і відкриє файл проекту одним кліком.
Джефф,

16

Я зіткнувся з тією ж проблемою і намагався оновити Microsoft.Bcl.Build.targets; що не допомогло.

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

Це не було видно з відповіді @TheESJ, тому ми вирішили розмістити окрему відповідь. Завдяки @TheESJ.


2

Я зіткнувся з цією проблемою кілька разів, і метод Властивості справді працює, але при роботі з проектом Wix мені довелося зробити наступне:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Коли я використав вузол Properties Xml, я отримав нову помилку:

Властивість OutputPath не встановлено для проекту 'MyInstallerProject.csproj'. Будь ласка, переконайтесь, що ви вказали дійсну комбінацію конфігурації та платформи для цього проекту. Конфігурація = 'Налагодження' Платформа = 'x86'. Ця помилка може також з'явитися, якщо якийсь інший проект намагається слідувати посиланням на проект до проекту, цей проект розвантажений або не включений у рішення, а проект посилання не будується з використанням того самого або еквівалентного Конфігурація або платформа.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.