web-dev-qa-db-fra.com

Création d'un fichier de solution à l'aide de msbuild

J'étais sur le point de créer un fichier de solution Visual Studio à l'aide de msbuild. J'ai utilisé la ligne de commande suivante pour créer la solution

msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32

Même si la construction commence à un moment donné, la construction semble se bloquer et ne parvient pas à avancer comme indiqué ci-dessous

Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets).

Il y a beaucoup de .proj en dessous de SolutionFile.sln ceux que je dois construire.

Je dois utiliser msbuild.exe plutôt que devenv.com

42
TVSuser1654136

Il existe une technique pour diagnostiquer ce qui se passe dans msbuild qui peut vous aider à comprendre ce qui se passe ici. À partir d'une invite de commande, définissez une variable d'environnement:

set msbuildemitsolution=1

Une fois que vous avez exécuté msbuild, cela générera un .metaproj fichier. Ce fichier est ce que msbuild utilise en interne mais supprime ensuite. Vous pouvez le lire pour découvrir le nom des cibles réelles. La cible Build est développée pour montrer ce qu'elle appelle réellement. Vous pouvez ensuite essayer de créer les cibles individuelles avec le /t drapeau de msbuild pour déterminer quelle cible est à l'origine du problème.

32
the_mandrill

Définissez la propriété de verbosité sur diagnostic et enregistrez la sortie dans un fichier. Cela vous aidera à déterminer le projet suspendu dans votre solution et à diagnostiquer votre problème.

La syntaxe de la ligne de commande serait la suivante pour enregistrer la sortie dans un fichier nommé MyProjectOutput.log:

msbuild SolutionFile.sln /t:build /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic

Il semble également que vous ayez besoin d'un espace après la cible/t pour construire le paramètre passé dans la commande que vous avez répertoriée.

msbuild.exe SolutionFile.sln /t:Build /p:Configuration=Release;Platform=Win32

De plus, êtes-vous sûr que chaque projet contient une configuration "Release" et "Win32"? Vous pouvez également essayer d'exécuter la commande ci-dessous et voir ce qui est compilé. Msbuild exécutera automatiquement la cible par défaut et les configurations nécessaires.

msbuild SolutionFile.sln

Une autre option que vous pouvez essayer est de simplement compiler le projet et de voir ce qui est produit:

msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
25
SoftwareCarpenter