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.

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: