Разделение работы MSBuild на проекты - PullRequest
2 голосов
/ 19 июля 2009

Я начинаю создавать сценарии MSBuild для своих продуктов, и я столкнулся с дилеммой.

Код разделен на около 25 проектов, некоторые требуют обфускации, некоторые требуют подписи под строгим именем; другие требуют ссылки в один файл.

Все эти проекты должны привести к 3 продуктам с 3 настройками.

Вопрос заключается в следующем: как разделить сценарии MSBuild, чтобы получить максимальный смысл?

Я создаю сценарий для каждого продукта? создать сценарий для каждого проекта? У меня есть один скрипт для сборки, другой для запутывания и так далее?

Ответы [ 2 ]

4 голосов
/ 19 июля 2009

Я думаю, что это хорошая идея иметь скрипт для каждого продукта. Чтобы минимизировать дублирование, создайте повторно используемые «подпрограммы» и импортируйте их в основной сценарий (это можно сделать с помощью директивы Import ).

<Import Project="..\Steps\Step1.proj" />
0 голосов
/ 19 июля 2009

Сценарий для каждого продукта звучит как путь. Вы также можете рассмотреть возможность использования любого количества общих или базовых сценариев для импорта общих шагов сборки. Например, Майк Чалий уже упоминал, что вы можете использовать Импорт в скрипте сборки вашего продукта:

<Import Project="..\Shared\Base.proj" />

Еще одна вещь, которой вы также можете воспользоваться, это переопределение цели и свойства. Это похоже на переопределение виртуальных методов в классе .Net. См. документацию и MSBuild Team Blog для получения более подробной информации. Я знаю, что довольно часто этим пользуюсь, устанавливая значения по умолчанию во включенных скриптах, затем переопределяя их по мере необходимости в скрипте сборки продукта, чтобы настроить поведение сборки. Например, я часто генерировал файлы, которые требуются перед сборкой, поэтому я подключаю эти цели в группу свойств BuildDependsOn. Таким образом, мои сгенерированные файлы генерируются всякий раз, когда я делаю F5 из IDE, вызываю цель сборки из командной строки или иным образом собираю проект или решение. Очевидно, что если у вас есть какие-либо шаги сборки, которые выполняются долго или должны выполняться только в особых обстоятельствах (например, сборщики сборки), вам нужно позаботиться о том, что именно подключается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...