Лучший инструмент для сборки .NET [дубликат]

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

Какой лучший инструмент сборки для .NET ?

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

19.08.2008 17:02:48
14 ОТВЕТОВ
РЕШЕНИЕ

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

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

28
31.08.2013 10:03:05
Привет, Питер, мы делаем то же самое, но мы создали шаблон NAnt и сделали его многоразовым. В итоге мы выпустили продукт под названием UppercuT - projectuppercut.org
ferventcoder 25.11.2009 02:59:31
Я проверю это. Я несколько раз думал о шаблонировании сценария NAnt, но до этого не дошел. Самая большая болевая точка в нашем процессе - утомительный цикл копирования / вставки / редактирования, чтобы настроить новый проект для сборки. Это легко, потому что сейчас у нас есть четко определенные соглашения, но, как я уже сказал, утомительно ... Спасибо за информацию.
Peter Meyer 25.11.2009 14:33:26

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

0
31.08.2013 09:57:16

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

2
31.08.2013 09:59:16

Я использовал оба и предпочитаю NAnt . Мне действительно трудно сказать, что одно "лучше", чем другое.

1
31.08.2013 10:03:26

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

0
19.08.2008 17:17:52

Это также зависит от того, что вы строите. В библиотеке задач MSBuild SDC есть несколько специальных задач. Например, для AD , BizTalk и т. Д.

В эту библиотеку включено более 300 задач, включая задачи для: создания веб-сайтов, создания пулов приложений, создания пользователей ActiveDirectory, запуска FxCop , настройки виртуальных серверов, создания zip-файлов, настройки COM + , создания общих папок, установки в GAC , настройки SQL Server. , настройка BizTalk 2004 и BizTalk 2006 и т. д.

1
31.08.2013 10:05:01

Я просто хотел бы добавить FinalBuilder в микс. Это не бесплатно, но если вам надоело редактировать XML- файлы и вы хотите работать в более приятной ( IMO ) среде, я бы попробовал.

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

18
31.08.2013 10:11:04
+1 от меня. FinalBuilder - отличный инструмент, без сомнения.
Will Dean 23.11.2008 14:48:39
Я использовал FinalBuilder, и это помогло мне значительно ускорить процесс. Его было легче использовать много лет назад, но теперь, похоже, он тоже стал сложным. Гораздо быстрее, чем другие варианты, хотя.
Stein Åsmul 27.11.2018 23:59:32

Я использую 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>

(Извините, если это немного плотно. Уценка, кажется, удаляет пустые строки.)

Это довольно просто, хотя, как только вы понимаете концепции и все зависимости обрабатываются автоматически. Я должен отметить, что мы используем файлы проекта Visual Studio, в которых много встроенной логики, но эта система позволяет людям создавать почти одинаково как в среде Visual Studio IDE, так и в командной строке, и при этом дает вам гибкость добавления объектов. в каноническую сборку, такую ​​как тестирование xUnit, которое вы видите в приведенном выше скрипте.

Одна группа PropertyGroup - это место, где происходит вся конфигурация, и все может быть настроено, например, исключение определенных проектов из сборки или добавление новых масок тестовой сборки.

В ItemGroup происходит логика, которая находит все файлы .csproj в дереве.

Кроме того, существуют цели, которым должно следовать большинство людей, знакомых с make, nAnt или MSBuild. Если вы вызываете цель Build, она вызывает __Compile, __Deploy и __Test. Цель Clean вызывает MSBuild для всех файлов проекта, чтобы очистить их каталоги, а затем глобальный каталог развертывания удаляется. Перестройте вызовы Clean, а затем Build.

8
20.08.2008 01:56:06

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

1
10.09.2008 08:23:43
Для .NET-центрированных проектов первым выбором будет / должен быть PowerShell, если используется динамический язык сценариев.
yantaq 29.01.2020 21:47:09

Я использую коммерческое программное обеспечение Automated Build Studio для целей сборки.

2
10.09.2008 08:26:42

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

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

http://projectuppercut.org/

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

0
9.06.2010 18:46:22
Первая ссылка мертва. Проект, вероятно, больше не находится в активной разработке.
kaskelotti 15.12.2017 13:42:07
UppercuT готовится к внедрению Cake, поэтому разработка скоро начнется. Но вы правы, эту ссылку нужно обновить.
ferventcoder 18.12.2017 19:02:17

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

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность нацеливаться на все версии .NET Framework, то есть 1.1, 2.0, 3.0 и 3.5
  • Поддерживает конфигурацию на основе XML
  • Поддерживает ссылки на проекты и файлы
  • Автоматически генерирует «полный список упорядоченных сборок» для данного проекта - без сенсорного обслуживания.
  • Способность обнаруживать и отображать круговые зависимости
  • Выполнить параллельную сборку - автоматически решает, какой из проектов в сгенерированном списке сборки можно построить независимо.
  • Возможность обрабатывать прокси сборки
  • Предоставляет визуальный ключ к процессу сборки, например, показывает «% выполнено», «текущий статус» и т. Д.
  • Создает подробный журнал выполнения как в XML, так и в текстовом формате.
  • Легко интегрируется с системой непрерывной интеграции CruiseControl.NET
  • Может использовать собственный регистратор, такой как XMLLogger, при таргетинге на версию 2.0+
  • Возможность разбора журналов ошибок
  • Возможность развертывания встроенных сборок в указанном пользователем месте
  • Возможность синхронизации исходного кода с системой контроля версий
  • Возможность управления версиями
8
31.08.2013 10:16:13
Это выглядит интересно. Но сейчас .NET 4.5, похоже, не обновляется.
liang 2.01.2014 15:05:20

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

3
31.08.2013 10:18:48

Рейк и Альбакор - отличное сочетание. Сила Ruby и отсутствие XML.

.NET с открытым исходным кодом 5 - .NET Automation с Rake и Albacore от Лиама МакЛеннана [Tekpub.com]

4
31.08.2013 10:28:16
это был эпический видео, я тоже начинаю использовать его в качестве инструмента для сборки :), как только вы посмотрели видео на code-magazine.com/Article.aspx?QuickID=1006101
dbones 4.05.2011 03:51:40