Générer des cibles spécifiques dans des solutions en utilisant MSBuild.exe

Vous pouvez utiliser MSBuild.exe pour générer des cibles spécifiques de certains projets d’une solution.

Pour générer une cible spécifique d’un projet particulier d’une solution

  1. Sur la ligne de commande, remplacez le répertoire par le dossier de la solution et tapez MSBuild.exe <SolutionName>.sln, mais n’appuyez pas encore sur Entrée. Utilisez le nom de votre solution.

  2. Spécifiez la cible après le commutateur -target: en respectant le format <ProjectName> :<TargetName>. Si le nom du projet contient un caractère %, $, @, ;, ., (, ) ou ', remplacez-le par un _ dans le nom de la cible spécifié.

Si vous ne savez pas quelles cibles sont disponibles, vous pouvez obtenir la liste des cibles disponibles pour un projet en appelant MSBuild avec le commutateur -targets (-ts). Par exemple, MSBuild.exe -ts SomeProject.proj. L’option -targets ou -ts est disponible uniquement sur les fichiers projet, et non sur le fichier solution.

Exemple

L’exemple suivant exécute la cible Rebuild du projet NotInSlnFolder, puis exécute la cible Clean du projet InSolutionFolder, qui se trouve dans le dossier de solution NewFolder.

msbuild SlnFolders.sln -target:NotInSlnfolder:Rebuild;NewFolder\InSolutionFolder:Clean

La génération d’une cible spécifique déclenche également la génération d’autres cibles dépendantes.

Dépannage

Si vous voulez examiner le projet de solution, vous pouvez utiliser pour cela une option de débogage fournie par MSBuild. Définissez la variable d’environnement MSBUILDEMITSOLUTION=1 et générez votre solution. Cette opération génère un fichier MSBuild nommé <SolutionName>.sln.metaproj, qui montre une vue interne de MSBuild de la solution au moment de la génération. Vous pouvez inspecter cette vue pour déterminer les cibles disponibles pour la génération, et d’autres détails de configuration.

N’effectuez pas de génération en ayant défini cette variable d’environnement, sauf si vous avez besoin de cette vue interne. Ce paramètre peut provoquer des problèmes de génération des projets dans votre solution. Examinez plutôt le journal binaire.