Dans certains cas de débug, il peut être intéressant de pouvoir accéder directement aux codes sources produits lors de la compilation d'un projet BizTalk et du coup pouvoir profiter du débugage en pas à pas de ces codes sources.

Cette manipulation n'est que peu recommandée mais peut s'avérer fortement utile pour comprendre des comportements lors de l'exécution de pipeline, orchestration ...

Plusieurs étapes distinctes sont donc nécessaire pour arriver jusqu'au débug en pas à pas du code source :

1. Produire le code source à partir d'un projet de type BizTalk :

La manipulation est simple mais non documentée comme l'explique ce post de Charles Young ; il est donc nécessaire d'ajouter cette clé de registre avant toute autre chose :

Key Location : en fonction de la version de BizTalk et surtout de Visual Studio
      -> BizTalk Server 2004 avec Visual Studio .Net 2003 : HKCU\Software\Microsoft\VisualStudio\7.1
      -> BizTalk Server 2006 et 2006 R2 avec Visual Studio 2005 : HKCU\Software\Microsoft\VisualStudio\8.0
Key Name: BizTalkProject
Value Type: DWORD
Value Name: GenerateCSFiles
Value : 1

Une fois cette clé ajoutée, il suffit de relancer Visual Studio et de recompiler la solution pour voir apparaître l'ensemble des fichiers .cs de chacun des objets tels que map, schéma, orchestration ...

2. Construire une solution custom à partir du code source

Maintenant que les fichiers de codes sources sont à disposition, il est nécessaire de construire un projet de type "Class Library" contenant l'ensemble de ces fichiers .cs. Quelques règles indispensables sont à suivre pour obtenir l'assembly correspondante à celle produite par le projet BizTalk :

  • Modifier la sortie du projet afin d'obtenir une assembly avec le même nom que celle du projet BizTalk
  • Signer l'assembly avec la même clé que celle du projet BizTalk
  • Ajouter les références nécessaires vers les assemblies BizTalk :
    • Microsoft.XLANGS.BaseTypes.dll
    • Microsoft.XLANGS.Engine.dll
    • Microsoft.XLANGS.RuntimeTypes.dll
    • Microsoft.XLANGS.BizTalk.Engine.dll
    • Microsoft.XLANGS.BizTalk.ProcessInterface.dll

Une fois ces étapes effectuées, il ne reste plus qu'a compiler le projet avec ses fichiers pdb en sortie (option par défaut) et à déployer l'assembly produite.

3. Déploiement de l'assembly custom

La phase de déploiement reste tout aussi simple que le reste puisqu'il suffit d'utiliser la console d'administration de BizTalk afin d'effectuer la mise à jour de la ressource. Ce procédé permet de s'assurer du déploiement de l'assembly dans le GAC et de l'enregistrement au sein de BizTalk :

Une fois le déploiement de cette nouvelle assembly effectué, il suffit de redémarrer le host BizTalk pour que la mise à jour soit prise en compte.

4. Lancement du débug

Après avoir posé des BreakPoint à quelques endroits stratégiques de l'orchestrations, la dernière étape consiste donc à lancer le debugger en s'attachant au process du host BizTalk : BTSNTSvc.exe . Dès qu'un flux transitera sur la plateforme le debuger sera activé et il sera possible de prendre la main en pas à pas sur l'exécution du code :

Voilà donc un procédé simple et efficace d'analyse du code produit lors de la compilation des objets d'un projet BizTalk et de débug en mode pas à pas.

Publié le 15/04/2008  par Arnaud Cleret