Possible Duplicate:
NAnt or MSBuild, which one to choose and when?
Какой лучший инструмент сборки для .СЕТЬ?
В настоящее время я использую NAnt, но только потому, что у меня есть опыт работы с Муравей. MSBuild предпочтительнее?





В общем, у меня сложилось впечатление, что NAnt предлагает большую гибкость по сравнению с MSBuild, тогда как (с моими относительно простыми потребностями) меня пока устраивает последний.
Мы используем MSBuild, потому что мы начали с Visual Studio 2005 (теперь Visual Studio 2008), а MSBuild уже был «встроен» в SDK - меньше обслуживания на сервере сборки. На самом деле это клон NAnt - оба инструмента бесконечно гибки в том смысле, что они позволяют вам создавать собственные задачи сборки в коде, и оба имеют приличный набор уже созданных задач сборки сообщества.
Фактически мы используем комбинацию NAnt и MSBuild с Круиз-контроль. NAnt используется для управления потоком скриптов и вызывает MSBuild для компиляции проектов. После запуска физической сборки NAnt используется для публикации отдельных выходных данных сборки проекта в общем месте.
Я не уверен, что это процесс самый лучший. Я думаю, что многие из нас все еще ищут отличный инструмент для сборки. Одна многообещающая вещь, которую я недавно услышал о .NET Rocks, серия 362, - это Джеймс Ковач PSake, система сборки, полностью основанная на PowerShell. Это звучит многообещающе, поскольку возможности PowerShell в теории безграничны.
Привет, Питер, мы делаем то же самое, но мы создали шаблон NAnt и сделали его многоразовым. В итоге мы выпустили продукт под названием UppercuT - projectuppercut.org.
Я проверю это. Я несколько раз думал о создании шаблона для сценария NAnt, но до этого не дошел. Самая большая проблема в нашем процессе - это утомительный цикл копирования / вставки / редактирования, чтобы настроить новый проект для сборки. Это легко, потому что теперь у нас есть четко определенные соглашения, но, как я уже сказал, утомительно ... Спасибо за информацию.
Я использовал оба и предпочитаю NAnt. Мне действительно трудно сказать, что одно «лучше» другого.
Я использовал как MSBuild, так и NAnt, и я предпочитаю MSBuild, главным образом потому, что по умолчанию он требует гораздо меньше настроек. Хотя вы можете чрезмерно усложнять вещи и загружать MSBuild с большим количеством конфигурационного мусора, в самом простом случае вы можете просто указать его на файл решения / проекта и запустить его, что в большинстве случаев в большинстве случаев является довольно.
Это также зависит от Какие, который вы создаете. У Библиотека задач MSBuild SDC есть несколько специальных задач. Например, для ОБЪЯВЛЕНИЕ, BizTalk и т. д.
There are over 300 tasks included in this library including tasks for: creating websites, creating application pools, creating ActiveDirectory users, running FxCop, configuring virtual servers, creating zip files, configuring COM+, creating folder shares, installing into the GAC, configuring SQL Server, configuring BizTalk 2004 and BizTalk 2006, etc.
Я просто хотел бы добавить в смесь FinalBuilder. Это не бесплатно, но если вам надоело редактировать файлы XML и вы хотите, чтобы среда работала в более приятной (ИМО) среде, я бы попробовал.
Я работал со всеми из них и всегда возвращался к FinalBuilder.
+1 от меня. FinalBuilder является, без сомнения, отличный инструмент.
Я использовал FinalBuilder, и это помогло мне значительно ускорить работу. Годы назад им было проще пользоваться, но теперь, похоже, тоже стало сложнее. Однако намного быстрее, чем другие варианты.
Я полностью использую MSBuild для сборки. Вот мой общий сценарий MSBuild, который ищет в дереве файлы .csproj и строит их:
<Project xmlns = "http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets = "Build">
<UsingTask AssemblyFile = "$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName = "XunitExt.Runner.MSBuild.xunit"/>
<PropertyGroup>
<Configuration Condition = "'$(Configuration)'==''">Debug</Configuration>
<DeployDir>$(MSBuildProjectDirectory)\Build$(Configuration)</DeployDir>
<ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
<ProjectExcludeMask></ProjectExcludeMask>
<TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
</PropertyGroup>
<ItemGroup>
<ProjectFiles Include = "$(ProjectMask)" Exclude = "$(ProjectExcludeMask)"/>
</ItemGroup>
<Target Name = "Build" DependsOnTargets = "__Compile;__Deploy;__Test"/>
<Target Name = "Clean">
<MSBuild Projects = "@(ProjectFiles)" Targets = "Clean"/>
<RemoveDir Directories = "$(DeployDir)"/>
</Target>
<Target Name = "Rebuild" DependsOnTargets = "Clean;Build"/>
<!--
===== Targets that are meant for use only by MSBuild =====
-->
<Target Name = "__Compile">
<MSBuild Projects = "@(ProjectFiles)" Targets = "Build">
<Output TaskParameter = "TargetOutputs" ItemName = "AssembliesBuilt"/>
</MSBuild>
<CreateItem Include = "@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
<Output TaskParameter = "Include" ItemName = "DeployFiles"/>
</CreateItem>
</Target>
<Target Name = "__Deploy">
<MakeDir Directories = "$(DeployDir)"/>
<Copy SourceFiles = "@(DeployFiles)" DestinationFolder = "$(DeployDir)"/>
<CreateItem Include = "$(TestAssembliesIncludeMask)">
<Output TaskParameter = "Include" ItemName = "TestAssemblies"/>
</CreateItem>
</Target>
<Target Name = "__Test">
<xunit Assembly = "@(TestAssemblies)"/>
</Target>
</Project>
(Извините, если он немного плотный. Markdown, похоже, удаляет пустые строки.)
Это довольно просто, если вы понимаете концепции и все зависимости обрабатываются автоматически. Я должен отметить, что мы используем файлы проекта Visual Studio, в которые встроено много логики, но эта система позволяет людям строить почти идентично как в среде Visual Studio IDE, так и в командной строке, и при этом дает вам возможность добавлять вещи. к канонической сборке, такой как тестирование xUnit, которое вы видите в сценарии выше.
Одна PropertyGroup - это место, где происходит вся конфигурация и что-то может быть настроено, например, исключение определенных проектов из сборки или добавление новых масок тестовой сборки.
ItemGroup - это то место, где происходит логика, которая находит все файлы .csproj в дереве.
Затем есть цели, которым должно следовать большинство людей, знакомых с make, nAnt или MSBuild. Если вы вызываете цель сборки, она вызывает __Compile, __Deploy и __Test. Целевой объект Clean вызывает MSBuild для всех файлов проекта, чтобы они очистили свои каталоги, а затем глобальный каталог развертывания удаляется. Rebuild вызывает Clean, а затем Build.
Использование динамического языка сценариев, такого как Python, BOO, Ruby и т. д., Для создания и поддержки сценариев сборки может быть хорошей альтернативой основанному на XML, например NAnt. (Они обычно читаются чище, чем XML.)
Для проектов, ориентированных на .NET, первым выбором будет / должен быть PowerShell, если используется динамический язык сценариев.
Для сборки я использую коммерческое программное обеспечение Студия автоматизированной сборки.
UppercuT использует NAnt для сборки, и это безумно простой в использовании Build Framework.
Автоматизированная сборка - это просто: (1) имя решения, (2) путь к системе управления версиями, (3) название компании для большинства проектов!
Вот несколько хороших объяснений: Апперкот
Первая ссылка мертва. Вероятно, проект больше не находится в активной разработке.
UppercuT готовится к внедрению Cake, поэтому разработка скоро откроется. Но вы правы, эту ссылку нужно обновить.
Есть еще один новый инструмент сборки (очень умная оболочка) под названием NUBuild. Он легкий, с открытым исходным кодом, чрезвычайно прост в настройке и обеспечивает практически бесконтактное обслуживание. Мне очень нравится этот новый инструмент, и мы сделали его стандартным инструментом для непрерывной сборки и интеграции наших проектов (у нас около 400 проектов от 75 разработчиков). Попробуйте сами.
Смотрится интересно. Но сейчас .NET 4.5, вроде не обновляется.
Мы используем Подпрыгивать, фреймворк для более чистых сценариев сборки на C#.
Грабли и Albacore - отличная комбинация. Сила Ruby и никакого XML.
.NET Open Source 5 - .NET Automation with Rake and Albacore, автор Лиам МакЛеннан [Tekpub.com]
это был эпический видеоролик, я тоже начинаю использовать его в качестве инструмента для сборки :), как только вы посмотрели видеоролик, посмотрите на code-magazine.com/Article.aspx?QuickID=1006101
Взгляните на Не настоящие.