Как указать, что проект VisualStudio 2012 зависит от двух конфигураций другого?

У меня есть решение VisualStudio 2012, состоящее из группы проектов C ++, каждый с конфигурацией Debug / Release и x64 / Win32 платформы. В итоге я получаю четыре исполняемых файла:

  • Отладка-Win32.exe
  • Отладка-x64.exe
  • Выпуск-Win32.exe
  • Выпуск-x64.exe

Из них я использую проект WiX для создания установщиков из выходных данных конфигурации * Release:

  • Выпуск-Win32.exe -> Установщик-Win32.msi
  • Выпуск-x64-exe -> Установщик-x64.msi

Затем у меня есть проект загрузчика записи WiX, чтобы связать их в один исполняемый файл загрузчика. Загрузчик выбирает правильный MSI для запуска на платформе.

Моя проблема в том, что проект загрузчика зависит от целевой платформы Win32 и x64 проекта установщика.

Прямо сейчас мне нужно вручную запустить сборку этих конфигураций платформы перед сборкой загрузчика. Есть ли способ (путем ручного редактирования скрипта msbuild) создать зависимость сборки от двух конфигураций целевой платформы?


person Daniel Gehriger    schedule 19.11.2012    source источник


Ответы (1)


В файле MSBUILD (TFSBuild.proj) добавьте оба варианта сборки, и это решит проблему.

<ConfigurationToBuild Include="Release|Win32">
  <FlavorToBuild>Release</FlavorToBuild>
  <PlatformToBuild>Win32</PlatformToBuild>
</ConfigurationToBuild>
<ConfigurationToBuild Include="Release|x64">
  <FlavorToBuild>Release</FlavorToBuild>
  <PlatformToBuild>x64</PlatformToBuild>
</ConfigurationToBuild>

Это гарантирует, что ваше приложение будет построено как на вариантах, так и на выходе (MSI или exe), которые должны присутствовать в соответствующих папках. Ваш пакет записи может получить его из папок.

person Isaiah4110    schedule 19.11.2012
comment
Спасибо AG_85, но я использую только решение VisualStudio, а не TFS. Возможно ли это без TFS? - person Daniel Gehriger; 19.11.2012
comment
Проще всего было бы использовать TFS и создать определение сборки, если у вас есть инфраструктура и настройка сервера. или же вы можете создать небольшой командный файл, который компилирует ваше решение в обоих вариантах. - person Isaiah4110; 19.11.2012
comment
msbuild \ Source * .sln / t: clean; rebuild / p: configuration = Release / p: Platform = win32 /l:FileLogger,Microsoft.Build.Engine;logfile=build.log msbuild \ Source * .sln / t: clean ; перестроить / p: configuration = Release / p: Platform = x64 /l:FileLogger,Microsoft.Build.Engine;logfile=build.log - person Isaiah4110; 19.11.2012
comment
Сначала вы компилируете свой проект для обоих необходимых вам вариантов, а затем запускаете другую команду MSBUILD для сборки проекта WIX. Как я сказал ранее, вы можете легко добиться этого, если у вас есть TFS, просто нужно создать одно определение сборки. - person Isaiah4110; 19.11.2012
comment
хорошо спасибо. Может мне стоит заглянуть в TFS. Я оставлю вопрос открытым еще некоторое время, чтобы посмотреть, есть ли другие предложения. В противном случае я приму твой ответ. - person Daniel Gehriger; 20.11.2012
comment
Звучит отлично! Я буду следить за другими ответами, которые хорошо помогут. - person Isaiah4110; 20.11.2012
comment
Я обнаружил, что более практично просто создать два отдельных установщика для x86 и x64. Я использую функцию «пакетной сборки», чтобы создать все свои цели за один раз. Выбор правильной загрузки не слишком утомляет пользователей, и я устанавливаю условия запуска, чтобы они не запускались на неправильной платформе. - person Tim Long; 22.12.2012