Я использую решение для веб-сайта 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>
Это позволит вам удалить папку.
(Я подозреваю , что если вы хотите , чтобы не иметь папку скопировать на все , файл решения будет место , чтобы указать , что, хотя я не должен был использовать это.)
CruiseControl.NET решает другую проблему (непрерывная интеграция) ... однако, я имел большой успех с NAnt именно для того, что вы просите. Есть кривая обучения, но как только вы станете опытным, вы удивитесь, как вы справились с этим.
Вы можете установить свойство Build Action / Copy to Output Directory для отдельных файлов (выберите файл и нажмите F4, чтобы открыть окно свойств), чтобы контролировать, что происходит с ними во время сборки, но не для папок. Вероятно, это можно автоматизировать с помощью (предварительной) задачи сборки, если вы не хотите делать это вручную.
Кроме того, вы можете исключить эти папки из проекта (щелкните правой кнопкой мыши и «исключить из проекта»); они все еще будут там («показать все файлы» в обозревателе решений), но они не будут включены при сборке проекта.
В дополнение к подсказке @ Fredrik о настройке элементов проекта в «Копировать в выходной каталог», вы также можете указать действие после сборки в свойствах проекта на вкладке «Сборка» и включить команды CMD, такие как copy.exe и move.exe.
Мы используем FinalBuilder для автоматизации ряда задач после сборки / предварительной сборки. Есть также веб-интерфейс, так что вы можете запускать сборки (или продвигать сайты), войдя на веб-сайт и нажав кнопку.
Не можете ли вы отредактировать файл MSBuild проекта Web Deployment, чтобы он делал то, что вы хотите?
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») и вставить туда необходимые задачи для выполнения ваших повторных действий после сборки.