2010-06-10 5 views
2

J'ai un grand projet fait de nombreux projets C++ et C#, et un script MSBuild (3.5) pour construire le tout. Ce script est basé sur les tâches VCBuild (projets C++) et MSBuild (projets C#). Il est régulièrement exécuté par un Continuous Integration server.Comment utiliser un SDK Windows spécifique avec MSBuild?

Je souhaite pouvoir sélectionner un SDK Windows spécifique (v6.0A, v7.0, v7.1 ...) à utiliser pour la compilation. Comme j'ai beaucoup de branches dans mon dépôt qui auraient finalement besoin d'une version SDK différente, j'ai besoin d'un moyen de sélectionner la bonne avant chaque compilation.

Sur mon ordinateur, j'ai été en mesure de configurer un script batch qui appelle le droit SetEnv.cmd avant de lancer le script MSBuild. Mais cette solution n'est pas utilisable sur le serveur CI car le script MSBuild est directement exécuté.

Connaissez-vous un moyen d'atteindre l'équivalent de SetEnv.cmd sous MSBuild?

Répondre

0

Je fini par créer une tâche MSBuild personnalisée qui prendrait un nom de fichier batch en tant que paramètre, exécutez la ligne de commande suivante (ayant batch.cmd comme paramètre):

cmd.exe /E:ON /V:ON /S /C "batch.cmd > nul && SET" 

La sortie est alors analysé, et je Définissez les variables d'environnement en conséquence pour le processus en cours.

De cette façon, je peux exécuter SetEnv.cmd et obtenir les bonnes variables d'environnement dans le processus MSBuild.

1

Vous pouvez créer une tâche MSBuild personnalisée qui utilise Environment.SetEnvironmentVariable pour définir les valeurs de variable d'environnement appropriées en fonction de la version de SDK de plate-forme spécifiée. Vérifiez le fichier vcvars32.bat (ou vcvars64.bat en fonction de la configuration de votre cible) pour voir quelles variables d'environnement doivent être définies.

Questions connexes