Что такое nAnt и как он может быть полезен для меня как разработчика С#?
Я всегда компилирую свой проект и копирую dll из проектов зависимостей в папку bin UI. через несколько дней с операциями "копировать и вставлять" каждый раз, когда я перекомпилирую свой проект, я пришел к выводу, что мне нужен инструмент, который будет делать это автоматически. после нескольких поисков найдено, что этот инструмент nAnt.
Я ищу информацию о том, как начать использовать его, но я не нашел многого.
поэтому, мой вопрос:
- Что такое nAnt в нескольких словах?
- Как я могу извлечь из этого выгоду?
EDIT: Я не могу просто добавить ссылку на проекты зависимостей, потому что это приведет к циклической зависимости.
Ответы
Ответ 1
Microsoft (к лучшему или худшему) создала систему MsBuild, для которой предназначены файлы проекта (.csproj,.vbproj и т.д.). Эти .proj файлы направляют систему MsBuild для создания проекта через XML. Это, по сути, то, что делает nAnt. Итак, общие, функциональные возможности MsBuild == nAnt.
Хотя я, конечно, трачу гораздо больше времени на MsBuild vs nAnt, поэтому я не могу быть по-настоящему экспертным мнением, по моему опыту, если вы используете Visual Studio, это, вероятно, лучший путь к спуститесь, оставаясь с MsBuild для создания ваших проектов, так как он, скорее всего, уже настроен на ваш процесс разработки. Поскольку вы почти наверняка уже используете .proj файлы (то есть .csproj, если вы делаете С#), это не для меня очень важно создать другой файл сборки: просто используйте тот, который у вас уже есть, и настройте его по своему усмотрению. Я не знаю ничего, что nAnt предлагает в этот момент, что MsBuild не исключает того факта, что он больше согласуется с режимом Open Source.
Опять же, поскольку мой опыт работы с 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 Server является альтернативой CC.NET, если вы можете взвесить стоимость или запустить (через программу MS BizSpark вы можете использовать ее бесплатно в течение нескольких лет, я думаю).
У меня нет ничего против nAnt - это просто то, что с тем, о чем вы говорили, вы хотите сделать это, похоже, вам не нужно. MsBuild может это сделать, и вам не нужно устанавливать ничего нового или даже создавать файл. Вам просто нужно сделать 5-строчную (примерно) xml-запись в файле .proj
Ответ 2
NAnt - это инструмент построения, который создает .NET-проекты и решения (на основе оригинального Ant для Java). Это также основанный на XML "скриптовый" язык, на котором вы заказываете "задачи" для выполнения работы по сборке, включая типы вещей, о которых вы говорите, - и MUCH, MUCH more!
Мы используем NAnt в качестве инструмента для создания скриптов (запускается при каждом контроле контроля источника с помощью Quise Control.NET, CC.K.a., нашего инструмента непрерывной интеграции) для выполнения наших автоматических сборок. Он включает такие вещи, как:
- Построение решения
- Выполнение наших модульных тестов, чтобы убедиться, что сборка не "сломалась".
- Развертывание нашего веб-проекта на нашем сервере разработки
- Закрепление и архивирование сборки в папку сборки для отслеживания истории и "резервного копирования"
Другим решением является MSBuild, который фактически используется Visual Studio. Это очень похоже.
Обратите внимание: вы НЕ МОЖЕТЕ строить проекты установки и развертывания с задачей решения NAnt (вы также не можете сделать это с помощью MSBuild). Чтобы обойти это, мы запустили devenv.com(Visual Studio без интерфейса) с аргументами командной строки - с помощью задачи NAnt " exec" вместо встроенного " решения" - для создания целого решения, включая Пакеты установки и развертывания. В прошлом мы также использовали WiX и MSBuild...
Наконец, для конкретной проблемы, которую вы описали, вы должны просто рассмотреть один из этих вариантов:
- Просто добавьте зависимые проекты в решение веб-сайта в качестве ссылок на проекты, и вы автоматически получите библиотеки DLL.
- Рассмотрите возможность создания задачи PostBuild (посмотрите в окне "Свойства проекта" ), которая делает xcopy на успешной сборке
Вы действительно не можете ошибиться, инвестируя время в NAnt, и в конечном итоге CCNET по мере увеличения сложности вашего проекта. Вы можете иметь CCNet смотреть свой контроль источника для проверок или выполнять ночные часы, и вы можете настроить зависимые проекты, чтобы, например, если ваш проект зависимостей строится, он может начать сборку вашего веб-сайта и/или запустить Unit Tests чтобы увидеть, что-то сломалось.
Ответ 3
Реализация моностроения для MSBuild не очень хороша. Также из того, что я знаю, вы можете использовать MSBuild только для компиляции проекта, и даже тогда он не будет компилировать проекты установки - и для этого вам действительно требуется devenv. В то время как от Nant вы можете настроить свою сборку, начиная с: очистки источников, их обновления, компиляции (с использованием msbuild или devenv), тестирования их с помощью NUnit, Ncover и всего остального, что может вам пригодиться. Так что, по-моему, Нант упирается.
P.S. Также Нант - очень простой язык и очень легко учиться.
Ответ 4
nAnt - это инструмент автоматической сборки, созданный на основе Java Ant. Он размещается здесь: http://nant.sourceforge.net/.
Вы можете использовать его для автоматизации здания и тестирования вашего программного обеспечения.