Question

J'exécute une solution de site Web ASP.NET contenant quelques autres projets.Je savais que les projets MSBuild en étaient capables, mais est-ce la meilleure solution ?Sont-ils faciles à créer ?NAnt, CruiseControl.NET ou toute autre solution sont-ils meilleurs ?

Lorsque je construis le site (en utilisant Projets de déploiement Web), puis-je automatiser une partie du build pour qu'il ne copie pas certains dossiers du projet dans le dossier Release ?Par exemple, j'ai des dossiers avec des index de recherche locaux, des images et d'autres contenus du dossier, mais je n'en ai jamais besoin ni les télécharge lors du déploiement du projet.

Je recherche également ce type de solution pour incrémenter automatiquement les numéros de build et de version.

Était-ce utile?

La solution

Voici un exemple de projet de déploiement Web scriptant ce type de tâche dans le fichier .wdproj :

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

Cela vous permettrait de supprimer un dossier.

(Je soupçonne que si vous ne vouliez pas que le dossier soit copié du tout, le fichier de solution serait l'endroit idéal pour le spécifier, même si je n'ai pas eu à l'utiliser.)

Autres conseils

MaseBase, vous pouvez utiliser Projets de déploiement Web pour créer et empaqueter des sites Web.Nous faisons cela tout le temps pour des projets ayant un aspect application web.Après avoir attribué un WDP à un site Web, vous pouvez ouvrir le .wdproj fichier sous forme de fichier XML en texte brut.À la fin se trouve une section commentée des cibles MSBuild qui représentent la séquence d'événements qui se déclenchent au cours d'un processus de génération.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

Vous pouvez décommenter les cibles souhaitées (par ex."AfterBuild") et insérez-y les tâches nécessaires pour réaliser vos activités post-build répétées.

Vous pouvez définir la propriété Build Action/Copy to Output Directory sur des fichiers individuels (sélectionnez le fichier et appuyez sur F4 pour ouvrir la fenêtre des propriétés) pour contrôler ce qui leur arrive pendant la construction, mais pas pour les dossiers.Cela pourrait probablement être automatisé avec une tâche de (pré)construction si vous ne souhaitez pas le faire manuellement.

Alternativement, vous pouvez exclure ces dossiers du projet (clic droit et « exclure du projet ») ;ils seront toujours là ("afficher tous les fichiers" dans l'explorateur de solutions), mais ils ne seront pas inclus lors de la construction du projet.

CruiseControl.NET résout un problème différent (intégration continue)...cependant, j'ai eu un grand succès avec NAnt spécifiquement pour ce que vous demandez.Il y a une courbe d'apprentissage, mais une fois que vous maîtriserez cela, vous vous demanderez comment vous avez pu vous en sortir.

En plus du conseil de @Fredrik sur la définition des éléments du projet sur "Copier dans le répertoire de sortie", vous pouvez également spécifier une action post-build dans les propriétés du projet dans l'onglet Build et inclure des commandes CMD telles que copy.exe et move.exe.

Nous utilisons FinalBuilder pour automatiser un certain nombre de tâches de post-construction/pré-construction.Il existe également une interface Web qui vous permet de lancer des builds (ou de publier des sites Web) en vous connectant au site Web et en cliquant sur un bouton.

http://www.finalbuilder.com/

Ne pouvez-vous pas modifier le fichier MSBuild du projet de déploiement Web pour qu'il fasse ce que vous voulez ?

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