Вопрос

Возможный дубликат:
NAnt или MSBuild, какой выбрать и когда?

Какой инструмент для сборки лучше всего подходит .СЕТЬ?

в настоящее время я использую НАнт но только потому, что у меня есть опыт работы с Муравей.Является MSBuild предпочтительнее?

Это было полезно?

Решение

На самом деле мы используем комбинацию НАнт и MSBuild с Круиз-контроль.NAnt используется для управления потоком сценариев и вызывает MSBuild для компиляции проектов.После запуска физической сборки NAnt используется для публикации результатов сборки отдельного проекта в общем расположении.

Я не уверен, что это лучшее процесс.Я думаю, что многие из нас все еще ищут отличный инструмент для сборки.Недавно на .NET Rocks я услышал одну многообещающую вещь: серия 362, является PSake Джеймса Ковача, систему сборки, которую он полностью основал на PowerShell.Это звучит очень многообещающе, поскольку возможности PowerShell теоретически безграничны.

Другие советы

я бы просто хотел бросить FinalBuilder в смесь.Это не бесплатно, но если вам надоело редактировать XML файлы и хочу немного лучше (ИМО) среда для работы, я бы попробовал.

Я работал со всеми из них и всегда возвращался к FinalBuilder.

Существует еще один новый инструмент сборки (очень умная оболочка) под названием НУСборка.Он легкий, с открытым исходным кодом, чрезвычайно прост в настройке и практически не требует обслуживания.Мне очень нравится этот новый инструмент, и мы сделали его стандартным инструментом для непрерывной сборки и интеграции наших проектов (у нас около 400 проектов от 75 разработчиков).Попробуйте это.

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность охватить всех .СЕТЬ Кадровые версии, то есть 1,1, 2,0, 3,0 и 3,5
  • Поддерживает конфигурацию на основе XML
  • Поддерживает ссылки на проект и файлы
  • Автоматически генерирует «полный список заказанного строительства» для данного проекта - без технического обслуживания.
  • Возможность обнаружения и отображения круговых зависимостей
  • Выполните параллельную сборку - автоматически решает, какие из проектов в списке сгенерированных сборки могут быть построены независимо.
  • Возможность обработки прокси-сборок
  • Обеспечивает визуальный подсказку для процесса сборки, например, показывая «% завершено», «текущее состояние» и т. Д.
  • Генерирует подробный журнал выполнения как в XML, так и в формате текста
  • Легко интегрируется сКруизКонтроль.NET Система непрерывной интеграции
  • Может использовать пользовательский журнал, как Xmllogger, когда нацеливание 2.0 + версия
  • Умение анализировать журналы ошибок
  • Возможность развертывания встроенных сборок в указанное пользовательское местоположение
  • Возможность синхронизировать исходный код с системой контроля источника
  • Возможность управления версиями

Я полностью использую 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.Если вы вызываете цель Build, она вызывает __Compile, __Deploy и __Test.Цель «Очистить» вызывает MSBuild для всех файлов проекта, чтобы они очистили свои каталоги, а затем удаляется глобальный каталог развертывания.Rebuild вызывает Clean, а затем Build.

Грабли и Альбакор — отличное сочетание.Сила Ruby и никакого XML.

.NET с открытым исходным кодом 5 — автоматизация .NET с помощью Rake и Albacore, Лиам МакЛеннан [Tekpub.com]

Мы используем Подпрыгивать, платформа для более чистых сценариев сборки на C#.

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

Мы используем MSBuild, поскольку начали с Visual Studio 2005 (теперь Visual Studio 2008), а MSBuild уже был «встроен» в SDK — сервер сборки требует меньше обслуживания.На самом деле это клон NAnt — оба инструмента бесконечно гибки в том смысле, что позволяют создавать собственные задачи сборки в коде, и оба имеют уже созданный приличный набор задач сборки сообщества.

Использование языка динамических сценариев, такого как Python, BOO, Ruby и т. д.для создания и поддержки сценариев сборки может быть хорошей альтернативой сценариям на основе XML, таким как NAnt.(Их, как правило, легче читать, чем XML.)

Я использовал оба и предпочитаю НАнт.Мне действительно сложно сказать, что один «лучше» другого.

Это также зависит от что ты строишь.А Библиотека задач MSBuild SDC есть пара особых задач.Например, для ОБЪЯВЛЕНИЕ, БизТок, и т. д.

В эту библиотеку включено более 300 задач, включая задачи для:Создание веб -сайтов, создание пулов приложений, создание пользователей ActiveDirectory, запуск FXCop, настройка виртуальных серверов, создание файлов ZIP, настройка COM+, Создание акций папок, установка в ПКК, настройка SQL-сервер, настройка Biztalk 2004 и Biztalk 2006 и т. Д.

Я использовал и MSBuild, и NAnt, но предпочитаю MSBuild, главным образом потому, что по умолчанию он требует гораздо меньше настроек.Хотя вы можете слишком усложнить ситуацию и загрузить MSBuild большим количеством конфигурационного мусора, в самом простом случае вы можете просто указать ему файл решения/проекта и запустить его, что в большинстве случаев в большинстве случаев является достаточно.

UppercuT использует NAnt для сборки, и это безумно простая в использовании платформа сборки.

Автоматизированная сборка так же проста, как (1) название решения, (2) путь управления версиями, (3) название компании для большинства проектов!

http://projectuppercut.org/

Несколько хороших объяснений здесь: Апперкот

Вообще говоря, у меня складывается впечатление, что NAnt предлагает больше гибкости по сравнению с MSBuild, тогда как (с моими относительно простыми потребностями) последний меня пока устраивает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top