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

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

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

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

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

16
задан The Chairman 25 January 2010 в 13:45
поделиться

3 ответа

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

Хотя я наверняка провожу довольно много времени с MsBuild vs nAnt, так что я не могу быть по-настоящему экспертным мнением, по моему опыту, если вы используете Visual Studio, то наверняка лучшим вариантом будет остаться с MsBuild для сборки ваших проектов, так как это, скорее всего, уже соответствует вашему процессу разработки. Поскольку вы почти наверняка уже используете .proje-файлы (т.е. .csproj, если вы делаете C#), то для меня не имеет особого смысла создавать другой build-файл: просто используйте тот, который у вас уже есть, и настраивайте его по своему усмотрению. На данный момент я не знаю ничего из того, что предлагает nAnt, кроме того, что MsBuild больше соответствует режиму Open Source.

Опять же, так как мой опыт работы с 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. CruiseControl может легко использовать и 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 запись в вашем .projek файле

12
ответ дан 30 November 2019 в 17:52
поделиться

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

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

1
ответ дан 30 November 2019 в 17:52
поделиться

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

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

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

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

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

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

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

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

14
ответ дан 30 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: