Лучший инструмент сборки .NET
-
08-06-2019 - |
Вопрос
Возможный дубликат:
NAnt или MSBuild, какой выбрать и когда?
Какой инструмент для сборки лучше всего подходит .СЕТЬ?
в настоящее время я использую НАнт но только потому, что у меня есть опыт работы с Муравей.Является MSBuild предпочтительнее?
Решение
На самом деле мы используем комбинацию НАнт и MSBuild с Круиз-контроль.NAnt используется для управления потоком сценариев и вызывает MSBuild для компиляции проектов.После запуска физической сборки NAnt используется для публикации результатов сборки отдельного проекта в общем расположении.
Я не уверен, что это лучшее процесс.Я думаю, что многие из нас все еще ищут отличный инструмент для сборки.Недавно на .NET Rocks я услышал одну многообещающую вещь: серия 362, является PSake Джеймса Ковача, систему сборки, которую он полностью основал на PowerShell.Это звучит очень многообещающе, поскольку возможности PowerShell теоретически безграничны.
Другие советы
я бы просто хотел бросить FinalBuilder в смесь.Это не бесплатно, но если вам надоело редактировать XML файлы и хочу немного лучше (ИМО) среда для работы, я бы попробовал.
Я работал со всеми из них и всегда возвращался к FinalBuilder.
Существует еще один новый инструмент сборки (очень умная оболочка) под названием НУСборка.Он легкий, с открытым исходным кодом, чрезвычайно прост в настройке и практически не требует обслуживания.Мне очень нравится этот новый инструмент, и мы сделали его стандартным инструментом для непрерывной сборки и интеграции наших проектов (у нас около 400 проектов от 75 разработчиков).Попробуйте это.
- Простой в использовании интерфейс командной строки
- Возможность охватить всех .СЕТЬ Кадровые версии, то есть 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) название компании для большинства проектов!
Несколько хороших объяснений здесь: Апперкот
Вообще говоря, у меня складывается впечатление, что NAnt предлагает больше гибкости по сравнению с MSBuild, тогда как (с моими относительно простыми потребностями) последний меня пока устраивает.