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

Possible Duplicate:
NAnt or MSBuild, which one to choose and when?

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

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

Взгляните на Не настоящие.

ThomasH 07.07.2020 20:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
41
1
47 836
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

В общем, у меня сложилось впечатление, что 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.

ferventcoder 25.11.2009 05:59

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

Peter Meyer 25.11.2009 17:33

Я использовал оба и предпочитаю 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 является, без сомнения, отличный инструмент.

Will Dean 23.11.2008 17:48

Я использовал FinalBuilder, и это помогло мне значительно ускорить работу. Годы назад им было проще пользоваться, но теперь, похоже, тоже стало сложнее. Однако намного быстрее, чем другие варианты.

Stein Åsmul 28.11.2018 02:59

Я полностью использую 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, если используется динамический язык сценариев.

yantaq 30.01.2020 00:47

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

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

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

http://projectuppercut.org/

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

Первая ссылка мертва. Вероятно, проект больше не находится в активной разработке.

kaskelotti 15.12.2017 16:42

UppercuT готовится к внедрению Cake, поэтому разработка скоро откроется. Но вы правы, эту ссылку нужно обновить.

ferventcoder 18.12.2017 22:02

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

http://nubuild.codeplex.com/

  • Простой в использовании интерфейс командной строки
  • Возможность настроить таргетинг на все рамки .СЕТЬ версии, то есть 1.1, 2.0, 3.0 и 3.5
  • Поддерживает конфигурацию на основе XML
  • Поддерживает как проект, так и файл Рекомендации
  • Автоматически генерирует «полный упорядоченный список сборки »для данного проект - Без сенсорного обслуживания.
  • Возможность обнаружения и отображения круговые зависимости
  • Выполнить параллельную сборку - автоматически решает, какой из проекты в сгенерированном списке сборки можно построить самостоятельно.
  • Возможность обрабатывать сборки прокси
  • Предоставляет визуальную подсказку к сборке процесс, например, показывающий «% завершен», «Текущий статус» и др.
  • Создает подробный журнал выполнения как в XML и текстовом формате
  • Легко интегрируется с CruiseControl.NET непрерывный система интеграции
  • Можно использовать настраиваемый регистратор, например XMLLogger при таргетинге на версию 2.0+
  • Возможность разбирать журналы ошибок
  • Возможность развертывания собранных сборок в указанное пользователем местоположение
  • Возможность синхронизировать исходный код с системой управления версиями
  • Возможность управления версиями

Смотрится интересно. Но сейчас .NET 4.5, вроде не обновляется.

liang 02.01.2014 19:05

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

Грабли и Albacore - отличная комбинация. Сила Ruby и никакого XML.

.NET Open Source 5 - .NET Automation with Rake and Albacore, автор Лиам МакЛеннан [Tekpub.com]

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

dbones 04.05.2011 07:51

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