Что такое nAnt, и как это может быть полезно для меня как разработчика C#?

Я всегда компилирую свой проект и копирую dll из проектов зависимостей в папку UI bin. после нескольких дней с операциями "копировать и вставлять" каждый раз, когда я перекомпилирую свой проект, я пришел к выводу, что мне нужен инструмент, который сделает это со мной автоматически. после нескольких поисков было установлено, что этот инструмент nAnt.

Я ищу информацию, как начать использовать его, но я не нашел много. Итак, мой вопрос:

  • Что такое nAnt в нескольких слова?
  • как я могу извлечь из этого пользу?

EDIT: я не могу просто добавить ссылку на проекты зависимостей, потому что это приведет к циклической зависимости.

4 ответов


Microsoft (к лучшему или худшему) создал систему MsBuild, в которой файл проекта (.csproj файл, .vbproj и т. д.) являются скриптами для. Эти.файлы proj направляют систему MsBuild для создания проекта через XML. Это, по сути, то, что делает Нант. Итак, в общем, функциональность MsBuild = = функциональность nAnt.

хотя я, конечно, провожу гораздо больше времени с MsBuild vs nAnt, поэтому я не могу быть действительно экспертным мнением, по моему опыту, если вы используете Visual Studio, Это, вероятно, лучший путь, чтобы спуститься, оставаясь с MsBuild для создания ваших проектов, так как это, скорее всего, уже в гармонии с вашим процессом разработки. так как вы почти наверняка уже используете .proj файлы (т. е. .csproj если вы делаете C#), мне не имеет смысла создавать другой файл сборки: просто используйте тот, который у вас уже есть, и настройте его по своему усмотрению. Я не знаю ничего, что nAnt предлагает на данный момент, что MsBuild не за исключением того факта это больше соответствует режиму с открытым исходным кодом.

опять же, поскольку мой опыт работы с nAnt ограничен, я не могу сказать, что это все еще верно, но когда я в последний раз использовал nAnt, было немного более многословно выполнять те же задачи по сравнению с MsBuild, что, если все еще верно, было бы еще одной причиной для меня использовать MsBuild вместо этого.

ваша потребность в удалении двоичных файлов в качестве задачи после сборки является общей для MSBuild или nAnt. Для упомянутой причины, я бы предложил сначала посмотреть на MsBuild, чтобы увидеть, как это будет работать, а затем смотреть на nAnt, только если MsBuild не соответствует вашему счету. Я говорю это только потому, что, как уже упоминалось, вы уже впитываете в MsBuild сегодня (движок MsBuild уже установлен на вашем компьютере), так почему бы и нет возьмите путь наименьшего сопротивления? Конечно, если MsBuild не делает то, что вы хотите, а nAnt делает, обязательно возьмите этот маршрут. Но копирование файлов будет 5 строк из XML в существующие В MSBuild (т. е. .файл csproj). Вот некоторые документы из MSDN:http://msdn.microsoft.com/en-us/library/3e54c37h.aspx

предыдущий плакат упоминается с использованием CruiseControl с nAnt. круиз-контроль можно легко использовать MsBuild тоже:

http://ccnetlive.thoughtworks.com/ccnet/doc/CCNET/MsBuild%20Task.html

поэтому, если вы хотите автоматизировать (непрерывную интеграцию) сборки, вы можете использовать CC.NET - ... MS Team Foundation Сервер является альтернативой CC.NET если вы можете переварить стоимость или являетесь стартапом (через программу MS BizSpark вы можете использовать ее бесплатно в течение нескольких лет, я думаю).

Я ничего не имею против нэнт-просто с тем, что вы упомянули, Вы хотите сделать, похоже, вам это не нужно. MsBuild может это сделать, и вам не нужно устанавливать ничего нового или даже создавать файл. вам просто нужно сделать 5-строчную (примерно) запись xml в вашем .файл proj


NAnt-это инструмент сборки, который создает проекты и решения .NET (на основе исходного Ant для Java). Это также основанный на XML "скриптовый" язык, где вы заказываете "задачи" для выполнения работы сборки, включая типы вещей, о которых вы говорите, и многое, многое другое!

мы используем NAnt в качестве нашего скриптового инструмента сборки (запускается при каждой проверке управления версиями Cruise Control.NET а.к. a. CCNET, наш инструмент непрерывной интеграции), чтобы сделать наши автоматизированные сборки. Она включает в себя вещи например:

  1. построение решения
  2. запуск наших модульных тестов, чтобы убедиться, что сборка не "сломалась"
  3. развертывание нашего веб-проекта на нашем сервере разработки
  4. Zipping и архивирование сборки в папку сборки для исторического отслеживания и"backout"

другое решение-MSBuild, которое фактически использует Visual Studio. Это очень похоже.

Do note: вы не можете создавать проекты установки и развертывания с помощью Задача решения NAnt (вы также не можете сделать это с MSBuild). Чтобы обойти это, мы начали бежать devenv.com (Visual Studio без пользовательского интерфейса) с аргументами командной строки-с помощью "exec "задача вместо встроенной"решение " задача--построить все решение, включая пакеты установки и развертывания. В прошлом мы также использовали WiX и MSBuild...

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

  • просто добавьте зависимые проекты в решение веб-сайта в качестве ссылок на проекты, и вы получите DLL там автоматически
  • подумайте о создании задачи PostBuild (см. окно свойств проекта), которая выполняет xcopy при успешной сборке

вы действительно не можете ошибиться, инвестируя время в NAnt, и в конечном итоге CCNET по мере увеличения сложности вашего проекта. Вы можете иметь CCNet смотреть вы можете настроить зависимые проекты, чтобы, например, если ваш проект зависимостей строится, он мог начать сборку вашего веб-сайта и/или запустить модульные тесты, чтобы увидеть, если что-то сломалось.


реализация Mono build для MSBuild не очень хороша. Также из того, что я знаю, вы можете использовать MSBuild только для компиляции проекта, и даже тогда он не будет компилировать проекты установки - и вам действительно нужен devenv для этого. В то время как от Nant вы можете настроить свою сборку, начиная с: очистки источников, их обновления, компиляции (с помощью msbuild или devenv), тестирования их с помощью NUnit, Ncover и всего остального, что может прийти вам на ум. Так что, по-моему, идите Nant hands вниз.

P. S. Также Нанте-это очень простой язык и очень проста в освоении.


nAnt-это автоматический инструмент сборки, полученный из Ant Java. Он размещен здесь:http://nant.sourceforge.net/.

вы можете использовать его для автоматизации сборки и тестирования программного обеспечения.