2009-04-30 4 views
1

Я автоматизирую мой процесс сборки с помощью TeamFoundation, и мне нужно выбрать, какие проекты компилировать в соответствии с .proj-файлом из сборки. Вот полный сценарий:TeamBuild - Можно ли выбрать, какие проекты компилировать при сборке?

У меня есть .proj-файл, который использует .sln-файл, чтобы скомпилировать решение, содержащее 2 веб-сайта. Файл .sln настроен для компиляции обоих веб-сайтов в конфигурации Release.

Моя цель состоит в том, чтобы собрать только один сайт на тип сборки, а именно я хочу BuildType1 скомпилировать сайт 1 и BuildType2 скомпилировать веб-сайт 2.

Является ли можно «изменить» в .sln в таком способ, которым я могу отменить один из сайтов для компиляции? Поскольку это автоматический процесс, я не могу вручную изменять .sln каждый раз, когда хочу скомпилировать только один веб-сайт.

ответ

1

Просмотрите раздел SolutionToBuild в файле TFSBuild.proj.

<SolutionToBuild Include="$(BuildProjectFolderPath)/path/MySolution.sln"> 
    <Targets>MyCustomTarget1;MyCustomTarget2</Targets> 
    <Properties> Configuration=Release</Properties> 
</SolutionToBuild> 
+0

Спасибо за ваш ответ, leppie. Позвольте мне посмотреть, получилось ли вы, что вы сказали. Если я создаю пользовательскую цель для каждого проекта, который я не хочу компилировать, эти цели будут переопределять целевые объекты по умолчанию, и если я просто разрешу им их очистить, будет пропущен компилятор проекта ? Если да, то как я могу связать цель с проектом? Я имею в виду, скажу, что у меня есть 50 проектов в моем решении, я хочу пропустить компиляцию одного из них, могу ли я сделать это, модифицируя только файл TFSBUILD.proj, так как я не могу изменить .csproj каждого проекта? – 2009-04-30 13:14:42

+0

Вы можете создать новую конфигурацию на уровне решения (IDE спросит, хотите ли вы также создать конфигурацию для проектов). Примечание. Вы измените только часть конфигурации в .proj, чтобы остальная часть была легко протестирована на стороне клиента. – leppie

+0

Хмм, я понял .. Я думаю, что необходимые изменения в решении достаточно просты, чтобы попросить команду разработчиков сделать это, я не думаю, что они будут жаловаться на это. Спасибо, leppie! – 2009-04-30 15:23:38

1

Есть два основных способа, которыми Вы можете управлять сборки:

  • создать отдельный тип сборки в вашей Team Explorer. У этого будет свой собственный полностью независимый файл TFSBuild.proj, поэтому он может полностью создать ту же кодовую базу. Установите SolutionToBuild для создания только того, что вы хотите (как описано в принятом ответе).

  • Используйте один тип сборки и установите его TFSBuild.proj, чтобы использовать свойство для управления встроенным (это требует более глубокого понимания сценариев MSBuild). В диалоговом окне New Queue Queue вы можете использовать флаг командной строки/p:, чтобы установить свойство так, как вам нужно. например "/ p: IncrementalGet = false; IncrementalBuild = false; ForceGet = true" заставит обычную инкрементную сборку выполнять полную перестройку. Это полезно для случайных ситуаций, но не является хорошей идеей для повседневной сборки, поскольку вы должны каждый раз устанавливать параметры вручную.