Duplicata possible :
NAnt ou MSBuild, lequel choisir et quand ?
Quel est le meilleur outil de construction pour .NET ?
J'utilise actuellement NAnt mais seulement parce que j'ai de l'expérience avec Fourmi . Est MSBuild préféré ?
Duplicata possible :
NAnt ou MSBuild, lequel choisir et quand ?
Quel est le meilleur outil de construction pour .NET ?
J'utilise actuellement NAnt mais seulement parce que j'ai de l'expérience avec Fourmi . Est MSBuild préféré ?
Nous utilisons en fait une combinaison de NAnt y MSBuild con Régulateur de vitesse . NAnt est utilisé pour le contrôle du flux script et appelle MSBuild pour compiler les projets. Après le déclenchement de la construction physique, NAnt est utilisé pour publier les sorties de construction des projets individuels à un emplacement partagé.
Je ne suis pas sûr que ce soit le meilleur processus. Je pense que beaucoup d'entre nous sont encore à la recherche d'un excellent outil de construction. Une chose prometteuse que j'ai entendue récemment sur .NET Rocks, épisode 362 c'est Le gâteau de James Kovac un système de construction entièrement basé sur PowerShell. Cela semble très prometteur, car ce que vous pouvez faire avec PowerShell est en théorie assez illimité.
Je voudrais juste lancer FinalBuilder dans le mélange. Ce n'est pas gratuit, mais si vous en avez marre d'éditer XML et que vous voulez un fichier un peu plus joli ( OMI ) dans lequel travailler, je tenterais ma chance.
J'ai travaillé avec tous ces logiciels et je suis toujours revenu à FinalBuilder.
Il existe un autre nouvel outil de construction (une enveloppe très intelligente) appelé NUBuild . Il est léger, open source et extrêmement facile à configurer, et sa maintenance est quasiment inexistante. J'aime beaucoup ce nouvel outil, et nous en avons fait un outil standard pour la construction et l'intégration continues de nos projets (nous avons environ 400 projets répartis entre 75 développeurs). Essayez-le.
J'utilise complètement MSBuild pour la construction. Voici mon MSBuild générique script qui recherche dans l'arbre les fichiers .csproj 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 supprimer les lignes vides).
C'est pourtant assez simple une fois que vous avez compris les concepts et que toutes les dépendances sont gérées automatiquement. Je dois noter que nous utilisons des fichiers de projet Visual Studio, qui ont beaucoup de logique intégrée, mais ce système permet aux gens de construire de manière presque identique à la fois dans l'IDE Visual Studio ou à la ligne de commande et vous donne encore la flexibilité d'ajouter des choses à la construction canonique comme le test xUnit que vous voyez dans le script ci-dessus.
C'est dans le PropertyGroup que se fait toute la configuration et que les choses peuvent être personnalisées, comme l'exclusion de certains projets de la construction ou l'ajout de nouveaux masques d'assemblage de test.
L'ItemGroup est l'endroit où la logique se produit pour trouver tous les fichiers .csproj dans l'arbre.
Ensuite, il y a les cibles, que la plupart des personnes familières avec make, nAnt ou MSBuild devraient être capables de suivre. Si vous appelez la cible Build, elle appelle _Compile, _ Deploy et __Test. La cible Clean appelle MSBuild sur tous les fichiers du projet pour qu'ils nettoient leurs répertoires, puis le répertoire de déploiement global est supprimé. Rebuild appelle Clean et ensuite Build.
Râteau et le germon est une excellente combinaison. La puissance de Ruby et pas de XML.
.NET Open Source 5 - .NET Automation avec Rake et Albacore par Liam McLennan [Tekpub.com]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.