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