Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

J’ai installé TFS 2010, et après ? Organisation du controleur de source

Quelque soient les noms que l’on donnent, on a tous à un moment ou à un autre à livrer des versions complètes du logiciel planifiées ou pas. On parle alors généralement de “Release”,”Service Pack”, “Fix”... En parallèle à cela, on a généralement une version en cours de développement contenant plusieurs fonctionnalités développées en parallèles dans plusieurs équipes. Bien organiser son contrôleur de source pour gérer cela est primordial et il n’y a pas le droit à l’erreur. Fort heureusement, il n’y a pas 10000 possibilités. Le Visual Studio Team Foundation Server Branching Guide 2010 sur Codeplex contient tout un ensemble de bonnes pratiques pour gérer cela:

image

Ces documents (documentation, poster, slides) ont les avantages suivants:

  • définir précisément les concepts et la structure du contrôleur de source,
  • définir les processus ou du moins une base de processus adaptable à votre structure.

Ensuite tout n’est pas gagné: il faut bien éduquer les équipes pour

  • qu’elles identifient les branches dans lesquelles elles doivent travailler et pour quelles raisons,
  • qu’elles adoptent des bonnes pratiques d’utilisation de TFS pour ne pas se tromper par l’utilisation de plusieurs workspaces par exemple (cela sera abordé dans un autre billet)

@+

J’ai installé TFS 2010, et après ? Les Collections de projets

Il est de plus en plus facile d’installer un server Team Foundation  surtout en version 2010: avec ou sans sharepoint, reporting services… Mais une fois installé, qu’est-ce que l’on fait avec ensuite ? Généralement la première chose que l’on va devoir créer c’est un Team Project, et là déjà un choix se pose: quel process template? Avant de choisir il faut savoir quelque chose: une fois choisi, on ne peut pas revenir en arrière. Dans ce cas comment faire pour tester un peu chaque template pour savoir quel est le bon? La réponse vient avec TFS 2010: utiliser une collection de projet pour tester!

 

Par défaut, l’installation de TFS crée une collection de projet nommé “DefaultCollection” (cela peut se changer à l’installation). Il faut avouer que ce nom n’est pas forcément le meilleur pour identifier des projets. Dans ce cas, il suffit d’en créer d’autres ( Voir ici ) et pourquoi pas une pour les tests. Ces tests sont généralement de plusieurs natures:

  • Tests de migration d’un autre contrôleur de source à TFS, voire d’un TFS 2005-2008. Cette étape permet de valider la procédure.
  • Le choix du process template
  • Tests de modifications de rapports et de process template. Dans ces cas-là on maintient une version identique à la version de la collection de projets utilisé pour le développement et on valide la modification des rapports et du process template. Il est aussi possible de copier la base de développement pour en créer une autre ( voir ici )
  • Formation des équipes

Il ne faut pas oublier aussi que ces collections sont complètement indépendantes les unes des autres et que l’on peut les migrer d’un serveur à un autre. Autant TFS 2005 et 2008 ne permettaient pas d’isoler complètement plusieurs équipes sur le même serveur, autant TFS 2010 prend en charge cela dès le concept de base du découpage de projets. Un serveur TFS 2010 est donc mutualisable pour plusieurs entités simultanément, chaque entité se voyant confié la gestion d’une collection de projet. On peut considérer une collection de projet comme un serveur TFS au sens 2005-2008. D’ailleurs c’est de cette façon que cela est vue coté API.

Que des bonnes raisons pour créer ces collections de projets!

@+

Chemin vers les powertools de TFS

Une petite astuce bien pratique: si vous avez besoin de savoir si les powertools de TFS 2010 sont installés, il suffit de vérifier la présence de la variable d’environnement “TFSPowerToolDir”. Personnellement je suis tombé dessus par hasard, j’avais d’abord cherché dans la base de registre!

@+

Posté le par Miiitch | 0 commentaire(s)
Classé sous :

Workflow control pour TFS 2010 RTM

Ok je sais, TFS 2010 est sorti depuis quelques mois, mais mieux vaut tard que jamais: J’ai publié sur Codeplex une version spécifique à TFS 2010!

Au menu des changements, j’ai ajouté 2 attributs pour définir le champ par défaut du regroupement, et un autre pour supprimer certains de la liste. Tous les détails ici: http://tfsworkflowcontrol.codeplex.com/releases/view/50563.

@+

Michel

[MsBuild] Un projet, plusieurs configurations, plusieurs jeux de références, c’est possible mais…

Je vais prendre pour exemple le développement avec les API de TFS. Si je veux pouvoir supporter VS 2010, VS 2008 avec ou sans compatibilité avec TFS 2010, je dois gérer 3 projets avec quasiment le même source. Une solution est de faire un projet puis d’ajouter des liens vers les fichiers pour chaque projet. Je vais vous proposer ici une autre solution basée sur MSBuild et la manipulation du fichier .csproj.

Si l’on regarde un fichier “.csproj” ou même “.vbproj” dans notepad, on se rend compte que le fichier est en fait un script MSBuild et que les références sont listées dans un “ItemGroup”:

 

image

Pour la démonstration je vais créer une Console avec 4 configurations. Ce qui va me permettre de développer l’application et aussi de pouvoir la compiler en Release pour chaque configuration:

  • Release 2008
  • Release 2010
  • Debug 2008
  • Debug 2010

 

On arrive alors dans cette état:

image

Ensuite, il suffit d’ouvrir le fichier de mon projet et d’ajouter 2 itemgroups: un pour chaque mode de compilation: 2008 ou 2010:

image 

Comment cela se présente sous Visual Studio? Autant cela marche bien lors de l’édition de source (voir plus loin), autant dans le “Solution Explorer”, il y a eu mieux:

image

Coté source donc, le changement de configuration change le fonctionnement de VS. Voici du code pour 2008:

image

J’ai fait exprès de choisir ce bout de code car l’appel au constructeur du WorkItemStore est obsolète en 2010. Et c’est bien ce que me dis Visual Studio lorsque je change de mode:

image

En complétant ce mode de fonctionnement avec des “Define” spécifiques pour TFS 2008 et TFS 2010, on obtient un projet qui permet de compiler pour chaque plateforme.

Pour info, j’ai fait cette démo avec Visual Studio 2010, mais cela marche de la même façon avec Visual Studio 2008. Il faut prendre ce billet comme une démonstration de la souplesse de MSBuild que comme une démarche à suivre. Je préfère avoir plusieurs projets complètements isolés qu’à devoir gérer tout dans le même. Comme Visual Studio ne comprends pas forcément bien ce qu’il se passe, on ne peut pas prédire comment Visual Studio va se comporter avec les itemgroups et les conditions et il faut souvent revenir dans le source du fichier .csproj pour vérifier son contenu.

 

@+

[TFS API] Identité du client

Ce billet va peut-être sembler évident, mais quand on est dans l’”action” on ne voit pas ses erreurs car cela n’apparaît pas forcément au premier coup d’oeil. l’API de TFS a souvent besoin comme information de l’identité de l’utilisateur: dans l’exemple suivant, je me connecte à un serveur en dehors du domaine:

 

var server = new TeamFoundationServer("http://XXXX:8080/tfs/YYY");

server.Authenticate();

Console.WriteLine("Authenticated User: " + server.AuthenticatedUserName);
Console.WriteLine("Windows User " + WindowsIdentity.GetCurrent().Name);


Console.ReadLine();

Cela donne le résultat suivant:

 

image

 

On voit bien lorsque l’on se connecte à un serveur en dehors du domaine que l’utilisateur courant est totalement différent de l’utilisateur authentifié sur le serveur! Normal, mais cela ne se voit pas lorsqu’on travaille sur un serveur dans le même domaine que le PC client. Attention donc :)

@+

Posté le par Miiitch | 0 commentaire(s)
Classé sous : ,

Power tools, client MSSCCI pour TFS/VS 2010 disponibles en version finale

La version d’avril 2010 est prête. pour la trouver, il suffit d’ouvrir l’”Extension Manager”:

image

Ou plus directement ici: http://visualstudiogallery.msdn.microsoft.com/en-us/3e8c9b68-6e39-4577-b9b7-78489b5cb1da?SRC=VSIDE

Le plug-in MSSCCI est aussi disponible :http://visualstudiogallery.msdn.microsoft.com/en-us/bce06506-be38-47a1-9f29-d3937d3d88d6

Ainsi que des extensions pour TeamBuild vers le monde java. En particulier des liens vers NAnt, Maven, et JUnit: http://visualstudiogallery.msdn.microsoft.com/en-us/2d7c8577-54b8-47ce-82a5-8649f579dcb6

 

@+

Editeur XAML de Visual Studio: comment aligner les attributs les uns en dessous des autres automatiquement

Lorsque l’on écrit du XAML, les tags XML peuvent vraiment devenir très longs et pas pratique à lire:

image

Il y a une option vraiment pratique dans l’éditeur de Visual Studio qui va nous permettre de réorganiser tout cela en mettant les attributs XAML les uns en dessous des autres:

image

Et lorsque l’on met en forme tout le document XAML(Edit>Advanced>Format Document), voici ce que l’on obtient:

image

 

C’est beaucoup plus lisible! Cette option existe aussi pour l’éditeur XML.

 

@+

Posté le par Miiitch | 3 commentaire(s)
Classé sous : , ,

[MSTD10] SQL Server 2008 pour les développeurs et Visual Studio Team System Database Edition

Lors de cette session que j’ai animé avec Rui, j’ai eu l’occasion de présenter, en plus des nouveautés de SQL Server 2008, comment utiliser l’édition “database” de Visual Studio 2008. Le principe? Avoir les mêmes outils lors que l’on travaille avec une base de données qu’avec du code .Net. En particulier: compilation, tests, comparaison de bases, analyse de code, refactoring  et ce qui est presque le plus important: la possibilité d’intégrer le source de la base de données dans un contrôleur de source avec le code applicatif!

Voici le webcast: http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=03f05fee-4c60-491b-b58d-3c1385dbc757

Ou trouver cette version de Visual Studio? En fait, elle est en téléchargement ici pour Visual Studio 2008 SP1 si vous vous avez déjà une version Team Developper ou Team Suite!

@+

Posté le par Miiitch | 0 commentaire(s)
Classé sous : ,

Mise à jour du TFS Workflow Control pour TFS 2010 RC

Je profite de la sortie des power tools pour TFS 2010 RC (http://visualstudiogallery.msdn.microsoft.com/en-us/a4f8a47e-1f6b-49d6-8f6e-34f705a2001b) pour mettre à jour mon contrôle de workflow pour le Team Explorer et l’interface web de TFS:

image

 

image

 

Pour télécharger et tester c’est ici: http://tfsworkflowcontrol.codeplex.com/releases/view/41005

@+

[TFSWorkflowControl] contrôle pour Team System Web Access disponible

J’ai publié une version silverlight du contrôle WPF. Il fonctionne exactement de la même façon, mais cette fois ci il cible l’interface web de TFS:

image

Dans le même template de work items il est maintenant possible d’afficher le workflow à la fois dans Team Explorer et dans les clients web.

Le contrôle pour le Team Explorer est ici, et le nouveau contrôle web est .

Bon téléchargement.

@+

[EF 4] Une synthèse sous forme de PDF par Daniel Wertheim

Daniel Wertheim viens de publier un condensé sous forme de PDF de tout son travail sur EF 4, que  ce soit au niveau des entités elle-même comme la publication en service. Le billet est ici: http://daniel.wertheim.se/2009/12/14/putting-entity-framework-4-to-use-in-a-business-architechture/ Ici un lien vers le PDF ainsi que l’archive contenant le code. On peut considérer son travail comme un workshop bien pratique pour s’initier à EF 4.

@+

Posté le par Miiitch | 0 commentaire(s)
Classé sous :

[TFS 2010] Clonage et renommage de collections

Ce billet est un peu la suite de celui sur la sauvegarde, car la procédure est presque la même. L’idée est la suivante: à partir d’une collection, je veux créer une copie de celle-ci sur le même serveur ou un autre serveur mais dans dans tous les cas avec un nom différent. Il y a plusieurs raisons pour cela, par exemple:

  • créer une copie pour un serveur pour tester une nouvelle configuration matérielle par exemple
  • pour fusionner plusieurs serveurs en 1: le renommage permet de palier l’utilisation du nom par défaut qui a du être utilisé sur tous les serveurs.

 

Une fois la collection détachée de TFS, il faut en faire une copie dans Sql Server sur le même serveur SQL Server ou un autre. Une fois la copie effectuée on effectue l’attachement avec la ligne de commande suivante:

TfsConfig collection /attach /collectionDb:.\sqlexpress;Tfs_MaCollectionBis /collectionName:MaCollectionBis /clone

Et si j’avais voulu le faire à partir de l’interface de TFS, cela se passe comme n’importe quelle attachement:

image

A l’étape suivante, on nous informe qu’il s’agit d’un clonage de collection (car j’essaye l’attachement sur le même serveur) et qu’il faut donc en donner un nouveau:

image

Et il suffit ensuite d’effectuer l’attachement tout simplement!

 

@+

Posté le par Miiitch | 1 commentaire(s)

[TFS 2010] Les power tools compatibles TFS 2010 beta 2 disponibles

Brian Harry vient de l'annoncer sur son blog: http://blogs.msdn.com/bharry/archive/2009/12/01/tfs-2010-power-tools-are-available.aspx.

Pas mal de choses ont changé car certaines fonctionnalités ont été intégrées dans le produit lui-même. Tous les détails sont ici: http://blogs.msdn.com/bharry/archive/2009/11/18/tfs-2010-power-tools-coming-soon.aspx.

On se retrouve à présent avec les mêmes outils sur la beta 2 de TFS 2010, qu'avec TFS 2008.

Bon téléchargement!

@+

[TFS 2010] Backup de seulement vos collections

Si vous voulez backuper toutes vos bases de TFS y compris celles des collections de projets, il y a une application procédure pour ça :) Mais si vous voulez seulement demander à vos DBAs de sauvegarder que vos collections vous allez avoir un problème: on peut peux pas sauvegarder une collection sans la détacher au préalable via la console TFS car la collection sera alors  inutilisable. Il faut donc passer par la procédure suivante:

  1. Détacher dans TFS
  2. Backup
  3. Re-attacher dans TFS.

Il ne faut pas confondre cette procédure d’attachement/détachement à celle de SQL Server concernant la base de données de la collection de projet. Dans notre cas la collection reste toujours connectée au serveur SQL. Cette procédure est obligatoire car la procédure de détachement copie des données dans la base de la collection pour la rendre transportable.

Alors comment faire pour automatiser tout ça? La réponse en 4 lettres: SSIS ou Sql Server Integration Services. On va donc créer un package pour réaliser ces 3 opérations.

On commence déjà par créer le package. L’ensemble de ces opérations ont été effectuées sur un TFS Basic. Ensuite on crée la tâche pour détachement de la collection: on va utiliser la ligne de commande via TfsConfig dans une tâche “Execute Process”:

 image

Ensuite on sauvegarde la base via la simple tâche de backup:

image

Et pour finir on copie notre tâche de détachement et on la modifie pour en faire une tâche d’attachement:

image

Voici l’enchainement dans SSIS:

image

On peut aussi ajouter la tâche d’attachement dans le handler d’erreur pour être sur qu’en cas d’erreur dans le script:  la collection est toujours attachée au final.

@+

XmlnsDefinitionAttribute et Silverlight

Je l'ai dis en commentaire dans mon précedent post, mais au moins ici ca a l'air plus clair!

Cela ne marche pas en Silverlight 3. Sur le msdn  (http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute%28VS.95%29.aspx)  on a ce gros warning:

XmlnsDefinitionAttribute is not relevant for XAML usage of custom assemblies that contain custom types for Silverlight. You still must map each assembly/namespace combination for XAML usage on a per-page basis as documented in the topic Silverlight XAML Namespaces, and Mapping XAML Namespaces as Prefixes. In Silverlight 3, the native XAML processor does not necessarily consume XmlnsDefinitionAttribute values found in assemblies as part of its parsing behavior, nor does the XAML markup compile build action. Silverlight 3 defines XmlnsDefinitionAttribute values on its core assemblies that are representative of the default Silverlight XML namespace as well as the types that Silverlight defines for the XAML namespace, but these attributes are provided mainly for development environments or tools.

Mais il n'y aucune remarque contre son utilisation en Silverlight 4: http://msdn.microsoft.com/en-us/library/system.windows.markup.xmlnsdefinitionattribute%28VS.100%29.aspx

Posté le par Miiitch | 0 commentaire(s)
Classé sous : ,

WPF et déclarations de namespaces

Lorsqu’un projet WPF devient complexe, on commence à surcharger les espaces de noms pour pouvoir utiliser nos contrôles. Voici un simple projet de contrôles:

image

Rien que pour ces 2 contrôles qui sont dans des espaces de noms différents je suis obligé de déclarer ceux-ci dans toute fenêtre ou contrôle qui en ont besoin:

image

C’est franchement pas pratique: avec cette méthode, si je veux avoir une bibliothèque organisé par espace de nom et facilement utilisable, je suis obligé d’avoir un espace de nom xaml pour chaque espace de nom .Net.

La solution à ce problème est l’utilisation de l’attribut XmlnsDefinitionAttribute: on va pouvoir définir une url comme espace de nom, exactement comme les contrôles natifs de Microsoft:

[assembly: XmlnsDefinition("http://blogs.developpeur.org/miiitch/wpf","MyControlLibrary")]
[assembly: XmlnsDefinition("http://blogs.developpeur.org/miiitch/wpf", "MyControlLibrary.Admin")]

Comme on peut le voir, je peux définir la même url pour plusieurs espaces de nom .Net. Ainsi le xaml est simplifié, et il n’y a plus de référence à l’espace de nom de l’assembly d’origine:

 

image

Comme l’espace de nom de la bibliothèque d’origine a disparu, cela signifie aussi que le refactoring sur les contrôles est possible sans avoir à modifier le xaml.

@+

Posté le par Miiitch | 5 commentaire(s)
Classé sous : , ,

[TFS 2010] Evolution de l’historique

Dans VS 2005 et VS 2008 l’affichage de l’historique d’un fichier n’est pas “la plus puissante” fonctionnalité du Team Explorer:

image

 

L’historique est présent en barre d’outil par défaut et il ne peut y avoir qu’un historique à la fois. C’est bien… mais pas suffisant :)

En 2010 c’est tout autre chose:

  • On peut avoir plusieurs historiques simultanément : un onglet par historique
  • Les données sont beaucoup plus complètes. C’est ce que l’on va voir.

 

Voici le nouvel écran d’historique:

image

Jusque là, rien de spécia coté donnéesl. On a par contre une barre d’outil qui nous proposent plusieurs options. On peut aussi voir les historiques en fonction des labels posés:

image

Prenons un autre fichier, dans une branche par exemple. Avec TFS 2008, l’historique commençait au moment de la création de la branche. Maintenant on a beaucoup plus d’informations:

image

On a non seulement l’historique habituel, mais aussi l’historique des versions des branches annexes. Par exemple tout en bas, sélectionné, on peut voir l’historique du fichier sur la branche principale.

A ce niveau nous travaillons sur les fichiers, mais il est aussi possible d’analyser les opérations réalisées sur un changeset pour identifier les sources des modifications lors des merges:

image

Ceci est l’affichage en mode historique du changeset 24. On identifie clairement que les données viennent des changeset 22 et 23 de la “Main”.

Pourquoi tout ceci en 2010 et pas en 2008 ? Parce que le controleur de source a été radicalement modifié au niveau du référencement des éléments. Ce billet donne un aperçu de ces changements et de la nouvelle philosophie qui se cache derière le terme de “slot mode”: http://blogs.msdn.com/mitrik/archive/2009/05/28/changing-to-slot-mode-in-tfs-2010-version-control.aspx.

 

@+

Bing maps pour Silverlight en 1.0

C’est sorti en 1.0 il y a 2 jours. Pour le téléchargement c’est ici: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830

Il y a aussi un SDK interactif: http://www.microsoft.com/maps/isdk/silverlight/

image

@+

Posté le par Miiitch | 0 commentaire(s)
Classé sous :


Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01