Использование MSBuild Import для модульного проекта - PullRequest
1 голос
/ 24 ноября 2010

Я разработал большой проект MSBuild для создания части нашего решения. Происходит много событий - синтаксический анализ / замена XML, службы Windows, удаленное копирование и т. Д. В результате управление файлом стало очень сложным, несмотря на все мои усилия по добавлению украшений в комментарии.

Как глупость, я разбил основные части функциональности на отдельные файлы, такие как «XML.targets», «Services.targets» и т. Д., И импортировал их в основной «Build.proj». Сборка все еще работала, и я сразу же обнаружил, что она намного более управляема.

Однако вся информация, которую я прочитал о функции импорта MSBuild, заключается в том, что она должна использоваться для импорта целей многократного использования, т. Е. Тех, которые могут быть использованы проектом -any- MSBuild без каких-либо изменений. Отдельные проекты, которые я создаю здесь, противоположны - специфичны для одного проекта и по умолчанию прерываются, если используются с чем-либо еще, если не будут изменены.

Итак, я думаю, что я спрашиваю, хотя я могу ... должен I? Существует ли внутренняя опасность при использовании импорта исключительно для организации большого проекта? Есть ли лучший способ сделать это?

Спасибо

1 Ответ

1 голос
/ 30 ноября 2010

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

...