Question

Double Possible:
NAnt ou MSBuild, lequel choisir et à quel moment?

Quel est le meilleur outil de génération pour .NET?

J'utilise actuellement NAnt mais seulement parce que j'ai de l'expérience avec Ant.Est MSBuild préféré?

Était-ce utile?

La solution

En fait, nous utilisons une combinaison de NAnt et MSBuild avec CruiseControl.NAnt est utilisé pour le script de contrôle du débit et des appels MSBuild pour compiler des projets.Après le physique de construire est déclenchée, NAnt est utilisé pour publier le projet individuel construire des sorties vers un emplacement partagé.

Je ne suis pas sûr que c'est le meilleur processus.Je pense que beaucoup d'entre nous sont encore à la recherche d'un excellent outil de construction.Une chose prometteur, j'ai entendu récemment sur .NET Rochers, l'épisode 362, est James Kovac est PSake, un système de construction, il s'est basé entièrement sur PowerShell.Il a l'air vraiment prometteur puisque ce que vous pouvez faire avec PowerShell est assez illimitées dans la théorie.

Autres conseils

Je voudrais juste jeter FinalBuilder dans le mélanger.Ce n'est pas gratuit, mais si vous en avez marre avec l'édition XML fichiers et que vous voulez un peu plus agréable (IMO) environnement de travail, je voudrais lui donner un aller.

J'ai travaillé avec eux tous et ont toujours allé de nouveau à l'FinalBuilder.

Il est un autre outil de construction (un de très intelligent wrapper) appelé NUBuild.Il est léger, open source et extrêmement facile à installer et fournit presque no-touch de l'entretien.J'aime vraiment ce nouvel outil, et nous en avons fait un outil de référence pour notre génération continue et l'intégration de nos projets (nous avons environ 400 projets à travers 75 développeurs).De l'essayer.

http://nubuild.codeplex.com/

  • Facile à utiliser l'interface de ligne de commande
  • Capacité de cibler tous les .NET Cadre versions, qui est, 1.1, 2.0, 3.0 et 3.5
  • Prend en charge XML de configuration
  • Supporte à la fois le projet et le fichier références
  • Génère automatiquement les “complet commandé construire la liste” pour une projet – Pas de touche d'entretien.
  • Capacité à détecter et afficher les dépendances circulaires
  • Effectuer la compilation parallèle - automatiquement décide de l' les projets dans le générés construire la liste peut être construit de façon indépendante.
  • La capacité à gérer le proxy assemblées
  • Fournit une indication visuelle de la construction processus, par exemple, en montrant “% terminée”, “l'état actuel”, etc.
  • Génère détaillée du journal de l'exécution à la fois XML et le format de texte
  • Facilement intégré avec CruiseControl.NET continue système d'intégration de l'
  • Peut personnalisé utiliser l'enregistreur comme XMLLogger lorsque le ciblage 2.0 + version
  • Capacité à analyser les journaux d'erreur
  • Capacité à déployer construit assemblées emplacement spécifié par l'utilisateur
  • Possibilité de synchroniser le code source avec source-système de contrôle de la
  • La Version de la capacité de gestion

J'utilise MSBuild complètement pour la construction.Voici mon générique MSBuild script qui effectue des recherches sur l'arbre .csproj fichiers et les construit:

<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>

(Désolé si c'est un peu dense.Markdown semble être éliminer les lignes vides.)

C'est assez simple une fois que vous comprenez les concepts et toutes les dépendances sont gérées automatiquement.Il est à noter que nous utilisons des fichiers de projets Visual Studio, qui ont beaucoup de logique, mais ce système permet aux gens de créer presque à l'identique tant au sein de l'IDE de Visual Studio ou à la ligne de commande et encore vous donne la flexibilité d'ajouter des choses à la canonique bâtir comme les xUnit tests que vous voyez dans le script ci-dessus.

L'un PropertyGroup est là toute la configuration se passe et les choses peuvent être personnalisés, comme l'exclusion de certains projets de construction ou d'ajout d'un nouveau test de l'assemblée des masques.

Le ItemGroup est où la logique se trouve que trouve tous les .csproj fichiers dans l'arborescence.

Puis il y a les cibles, la plupart des gens familiers avec faire, nAnt ou MSBuild devrait être capable de suivre.Si vous appelez la cible de génération, il appelle __Compiler __Déployer et __ _ _ Test.La cible Clean appels MSBuild sur tous les fichiers de projet pour eux de nettoyer leurs répertoires et puis le déploiement mondial répertoire est supprimé.Reconstruire les appels Nettoyer et ensuite Construire.

Râteau et le Germon est une excellente combinaison.La puissance de Ruby et pas de XML.

.NET Open Source à 5 .NET de l'Automatisation avec le Râteau et le Germon par Liam McLennan [Tekpub.com]

Nous sommes à l'aide de Bounce, un cadre de travail plus propres scripts de compilation en C#.

J'utilise un logiciel commercial, Génération Automatisée Studio pour le build but.

Nous utilisons MSBuild, parce que nous avons commencé avec Visual Studio 2005 (maintenant Visual Studio 2008), et MSBuild a déjà été "intégrée" pour le SDK, il y a moins de maintenance sur le serveur de build.C'est un NAnt clone, vraiment - les deux outils sont infiniment souple dans la mesure où ils vous permettent de créer personnalisé créer des tâches dans le code, et les deux ont un bon set de la communauté à construire des tâches déjà créé.

À l'aide d'une dynamique de langage de script comme Python, BOO, Ruby, etc.pour créer et maintenir des scripts de génération peut être une bonne alternative à une base de XML comme un autre de NAnt.(Ils ont tendance à être plus propre à lire que XML.)

J'ai utilisé les deux et préfèrent NAnt.C'est vraiment dur pour moi de dire qu'on est "mieux" que l'autre.

Il dépend aussi de ce vous êtes en train de construire.L' MSBuild DDC bibliothèque de Tâches a un couple de missions spéciales.Par exemple, pour AD, BizTalk, etc.

Il y a plus de 300 tâches incluses dans cette bibliothèque, y compris les tâches de:création de sites web, la création de les pools d'applications, la création de ActiveDirectory utilisateurs, l'exécution de FxCop, la configuration des serveurs virtuels, la création d' les fichiers zip, la configuration de l' COM+, la création d' dossier actions, l'installation se fait dans le GAC, la configuration de l' SQL Server, la configuration de BizTalk 2004 et BizTalk 2006, etc.

J'ai utilisé les deux MSBuild et de NAnt, et je préfère de beaucoup MSBuild, principalement parce qu'il nécessite beaucoup moins de configuration par défaut.Bien que vous pouvez compliquer les choses et de les charger MSBuild vers le bas avec un lot de configuration indésirable trop, à son expression la plus simple, il vous suffit de le pointer vers une solution ou d'un fichier de projet et le faire aller qui, la plupart du temps, pour la plupart des cas, est assez.

UppercuT utilise NAnt à construire et il est incroyablement facile à utiliser Build Cadre.

Automatisé s'appuie aussi facile que (1) le nom de la solution, (2) de la source chemin de contrôle, (3) nom de la société pour la plupart des projets!

http://projectuppercut.org/

Quelques bonnes explications ici: UppercuT

En général, j'ai l'impression que NAnt offre plus de flexibilité par rapport à MSBuild, alors que (à mon relativement simples besoins) et j'ai été très bien avec ce dernier jusqu'à présent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top