Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Comment Team Build peux vous accompagner dans la mise à jour des bases de données

Bonjour à toutes et à tous,

Team Build qui ce trouve être l'outil permettant de générer des binaires pour les projets situés sur Team Foundation Server, repose sur MS Build.

MSBuild est apparu en même temps que le Framework .net 2.0 et à permit de personnaliser des tâches de génération par des fichiers de configuration XML. Voici un exemple de fichier:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

   <Target Name="MaTâche"/>

</Project>

Un fichier MSBuild dont l'extention est .proj commence donc par une balise <Project> et ce termine par </Project>; les éléments ce trouvant entre ces deux balises permettent donc de donner (transmettre) des informations.

Comme je le disais, Team Build repose sur MSBuil et donc fonctionne de la même façon. Avec Visual Studio Team System 2008 Database Edition Power Tools il est possible de comparrer le schéma de deux bases de données ou les données de deux bases de données. Ce sont les commande :

  • SqlSchemaCompareTask
  • SqlDataCompareTask

Donc voici le fonctionnement pour une utilisation direct depuis MSBuild :

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--Import the settings-->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\TeamData\Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets"/>
  <Target Name ="SchemaCompare">
    <SqlSchemaCompareTask
       SourceConnectionString="Data Source=(local);User Id=sa;Password=sa;Trusted_Connection=False;"
        SourceDatabaseName="Test"
        TargetConnectionString="Data Source=(local)\SQLEXPRESS;User Id=sa;Password=sa;Trusted_Connection=False;"
        TargetDatabaseName="Test"
        OutputPath = "c:\"
        OutputFileName = "SchemaCompare.sql"/>
  </Target>
</Project>

Il est à noté que j'utilise la version 2008 donc le fichier de target ce trouve dans  (VisualSutdio\V9.0)

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--Import the settings-->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\TeamData\Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets"/>
  <Target Name ="DataCompare">
    <SqlDataCompareTask
       SourceConnectionString="Data Source=(local);User Id=sa;Password=sa;Trusted_Connection=False;"
        SourceDatabaseName="Test"
        TargetConnectionString="Data Source=(local)\SQLEXPRESS;User Id=sa;Password=sa;Trusted_Connection=False;"
        TargetDatabaseName="Test"
        OutputPath = "c:\"
        OutputFileName = "DataCompare.sql"/>
  </Target>
</Project>

L'exécution par exemple pour MSBuild serait : MSBuild.exe MonFichier.proj /t:DataCompare

Pour permettre à Team Build de générer automatiquement ces fichiers lors des générations, il suffit de rajouter les commandes dans le fichier .proj qui est stocké dans le contrôler de codes sources au niveau de chaque projet.

Dans ce fichier il est possible de rajouter des commandes dans un ensemble de tâches Team Build. Pour cet exemple je vais rajouter ma commande SCHEAMCOMPARETASK dans la tache AFTERCOMPILE qui est la tache qui est exécuter après la compilation des fichiers de code. Il est préférable pour la lisibilité du fichier de rajouter ce code en fin de fichier juste avant la balise </PROJECT>.

  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0
          \TeamData\Microsoft.VisualStudio.TeamSystem.Data.PowerTools.Tasks.targets"/>
  <Target Name ="AfterCompile">
    <SqlSchemaCompareTask
       SourceConnectionString="Data Source=(local);User Id=sa;Password=sa;Trusted_Connection=False;"
        SourceDatabaseName="test"
        TargetConnectionString="Data Source=(local)\SQLEXPRESS;User Id=sa;Password=sa;Trusted_Connection=False;"
        TargetDatabaseName="test"
        OutputPath = "$(OutDir)"
        OutputFileName = "TestSchemaCompare.sql"/>
  </Target>

Et voila à chaque compilation du projet le fichier contenant les script SQL de migration du schéma de la base de données sera générer et grace à la propriété partagé Team Build nommé $(OutDir) le fichier ce retrouvera au même emplacement que le MSI, DLL ou EXE.

Je vous souhaite bon BUILD ;)

 

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mercredi 28 mai 2008 16:40 par pc152
Classé sous :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 4 heures et 38 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 5 heures et 52 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 19 heures et 32 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 20 heures et 28 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 20 heures et 43 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18