Как мне автоматизировать повторяющиеся задачи после сборки?

StackOverflow https://stackoverflow.com/questions/15774

Вопрос

Я запускаю решение для веб-сайта ASP.NET с несколькими другими проектами в нем.Я знал, что проекты MSBuild способны на это, но лучший ли это способ?Легко ли их создавать?NAnt, CruiseControl.NET или любое другое решение лучше?

Когда я создаю сайт (используя Проекты веб-развертывания), могу ли я автоматизировать часть сборки, чтобы она не копировала определенные папки из проекта в папку выпуска?Например, у меня есть папки с локальными поисковыми индексами, изображениями и другим содержимым, входящим в состав папки, но они мне никогда не нужны и я не загружаю их при развертывании проекта.

Я также рассматриваю этот тип решения для автоматического увеличения номеров сборок и версий.

Это было полезно?

Решение

Вот пример проекта веб-развертывания, в котором выполняется сценарий такого рода задачи в файле .wdproj:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

Это позволило бы вам удалить папку.

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

Другие советы

MaseBase, вы можете использовать Проекты веб-развертывания создавать и упаковывать веб-сайты.Мы делаем это постоянно для проектов с аспектом веб-приложения.После того как вы назначите WDP веб-узлу, вы можете открыть .wdproj файл в виде обычного текстового XML-файла.В конце находится прокомментированный раздел целевых объектов MSBuild, которые представляют последовательность событий, запускаемых в процессе сборки.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Вы можете раскомментировать нужные вам целевые объекты (например,"AfterBuild") и вставьте туда необходимые задачи для выполнения ваших повторяющихся действий после сборки.

Вы можете установить действие сборки / Копировать в свойство Output Directory для отдельных файлов (выберите файл и нажмите F4, чтобы открыть окно свойств), чтобы управлять тем, что происходит с ними во время сборки, но не для папок.Вероятно, это можно было бы автоматизировать с помощью задачи (предварительной) сборки, если вы не хотите делать это вручную.

В качестве альтернативы вы можете исключить эти папки из проекта (щелкните правой кнопкой мыши и выберите "исключить из проекта").;они все равно будут там ("показать все файлы" в обозревателе решений), но они не будут включены при создании проекта.

CruiseControl.NET решает другую проблему (непрерывная интеграция) ...тем не менее, я добился большого успеха с NAnt именно в том, о чем вы просите.Существует кривая обучения, но как только вы овладеете навыками, вы будете удивляться, как вы вообще обходились без этого.

В дополнение к совету @Fredrik о том, как установить для элементов проекта значение "Копировать в выходной каталог", вы также можете указать действие после сборки в свойствах проекта на вкладке Сборка и включить команды CMD, такие как copy.exe и move.exe.

Мы используем FinalBuilder для автоматизации множества задач после сборки / до сборки.Существует также веб-интерфейс, так что вы можете запускать сборки (или продвигать веб-сайты), войдя на веб-сайт и нажав кнопку.

http://www.finalbuilder.com/

Разве вы не можете отредактировать файл MSBuild проекта веб-развертывания, чтобы он делал то, что вы хотите?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top