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

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

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

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

7 ОТВЕТОВ
РЕШЕНИЕ

Вот пример проекта веб-развертывания, выполняющего сценарии такого рода в файле .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>

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

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

8
3.10.2008 15:53:38

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

1
19.08.2008 05:59:49

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

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

2
19.08.2008 06:51:24

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

1
19.08.2008 08:24:28

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

http://www.finalbuilder.com/

1
19.08.2008 19:42:46

Не можете ли вы отредактировать файл MSBuild проекта Web Deployment, чтобы он делал то, что вы хотите?

1
19.08.2008 19:48:13

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») и вставить туда необходимые задачи для выполнения ваших повторных действий после сборки.

4
28.08.2008 17:26:24