VS2010: Как выполнять ‘Publish’ из Team Build если у вас есть C++ проекты?

У меня есть solution, в котором находятся разнородные проекты – C#/C++, EXE/DLL/Library. В общем, практически весь букет. Да, и самое главное – там ещё есть Сloud Service, т.е. Azure. И всё это собирается при помощи Team Build 2008.

В какой-то момент мне очень захотелось получать в результате сборки готовый пакет для развёртывания в Azure. Для этого надо выполнять target “Publish” для .ccproj проектов. Добавил в tfsbuild.proj следующую строчку:

<SolutionToPublish Include=$(SolutionRoot)\MySolution.sln/>

Всё было бы хорошо, но:

  1. По-умолчанию MSBuild считает необходимым публиковать все EXE проекты. Сделано это было для .Net приложений. В этом случае он генерирует ClickOnce manifest.
  2. Начиная с версии 10, в Visual Studio все C++ проекты перешли на MSBuild (ура, VCBUILD  прощай!), но в данном случае это помешало.

В силу вышеперечисленных обстоятельств, некто, не будем показывать на него пальцами, пытается построить ClickOnce manifest для C++ EXE. Естественно, с достаточно предсказуемым результатом – манифеста то нет!

Внимательное исследование файла ‘ Microsoft.Common.targets’ показало, что проблему можно вылечить указав

<PublishableProject>false</PublishableProject>

в файле .vcxproj. Я вставил определение этого свойства сразу после определения _ProjectFileVersion:

<PropertyGroup>
  <_ProjectFileVersion>10.0.20728.1</_ProjectFileVersion>
  <PublishableProject>false</PublishableProject>
  <OutDir Condition=‘$(Configuration)|$(Platform)’==’Debug|Win32′>..\..\bin\$(Configuration)\</OutDir>

Всё вышесказнное справедливо для Visual Studio 2010 Beta1/Beta2.

Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 82 other followers