Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

[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.

 

@+

Publié lundi 31 mai 2010 09:00 par Miiitch
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 :

Commentaires

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

Salut Mitch, sinon t'aurais dû faire un wrapper qui connaisse les 3 versions  (chiant à coder j'imagine) ?

Pour les méthodes communes à certaines interfaces, tu peux peut-être utiliser du dynamic ? => pb tu perds pas mal de typesafety ce qui n'est pas souhaitable... pas top en fait.

c'est vrai que le linked files semblent le plus approprié (type safety et pas de redondance de code)

jeudi 3 juin 2010 17:12 by vLabz
Les commentaires anonymes sont désactivés

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