Что такое nAnt и чем он может быть полезен мне как разработчику C #? - PullRequest
16 голосов
/ 24 января 2010

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

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

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

РЕДАКТИРОВАТЬ: Я не могу просто добавить ссылку на проекты зависимостей, потому что это приведет к циклической зависимости.

Ответы [ 4 ]

14 голосов
/ 24 января 2010

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

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

  1. Построение решения
  2. Запуск наших юнит-тестов, чтобы убедиться, что сборка не «сломалась»
  3. Развертывание нашего веб-проекта на нашем сервере разработки
  4. Архивирование и архивирование сборки в папку сборки для исторического отслеживания и «возврата»

Другим решением является MSBuild, который фактически используется Visual Studio. Это очень похоже.

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

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

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

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

12 голосов
/ 24 января 2010

Microsoft (в лучшую или в худшую сторону) создала систему MsBuild, для которой создаются файлы проекта (.csproj, .vbproj и т. Д.).Эти файлы .proj направляют систему MsBuild на сборку проекта через XML.По сути, это то, что делает nAnt.Итак, в целом, функциональность 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 делает, во что бы то ни стало, выберите этот путь.Но при копировании файлов в вашем существующем файле MsBuild (т.е. .csproj) будет примерно 5 строк XML.Вот некоторая документация из MSDN: http://msdn.microsoft.com/en-us/library/3e54c37h.aspx

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

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

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

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

3 голосов
/ 15 мая 2012

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

P.S. Кроме того, Нант - очень простой язык, и его очень легко выучить.

1 голос
/ 24 января 2010

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

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

...