web-dev-qa-db-fra.com

Quels paramètres Visual Studio passe-t-il à MSBuild?

Lorsque Visual Studio exécute une génération, il exécute MSBuild pour effectuer la majorité du travail. Si vous transmettez le fichier .sln à MSBuild, avec les propriétés de configuration et de plate-forme appropriées, il créera votre solution de la même manière que Visual Studio le ferait.

msbuild mysolution.sln /p:Configuration=Release /p:Platform="Any CPU"

Cependant, il y a il y a différences: parfois, une génération génère une erreur via MSBuild et non via Visual Studio, ou vice-versa.

Quels paramètres Visual Studio passe-t-il dans MSBuild pour influencer le processus? Existe-t-il un moyen de voir les paramètres qu'il transmet lors de l'exécution d'une build?

56
Paul Turner

Visual Studio n'exécute pas MSBuild.exe, mais héberge le moteur de construction lui-même (au moyen du Microsoft.Build.* assemblies) - du moins c'est le cas pour le système de projet C # par défaut. D'autres langues, compléments, packages, etc. peuvent le faire différemment.

En fait, il y avait une série d'articles sur les blogs Microsoft à ce sujet, j'essaie de les trouver et de mettre à jour cette réponse.

[~ # ~] mise à jour [~ # ~] : Je l'ai retrouvé. Recherchez les messages "MSBuild dans Visual Studio" ici .

Concernant votre question d'origine, this page pourrait vous aider davantage. Vous pouvez également aller dans "Outils", "Options", "Projets et solutions", "Créer et exécuter" et augmenter la verbosité de la sortie MSBuild. Avec "Diagnostic", vous devriez voir essentiellement chaque propriété définie au démarrage de la construction.

38
Christian.K

Tout d'abord, vous pouvez exécuter msbuild avec le /v:diag argument pour obtenir une journalisation au niveau du diagnostic. Cela peut vraiment aider à comprendre pourquoi une build échoue.

Sinon, oui, si vous utilisez Process Monitor , vous pouvez surveiller les événements de démarrage du processus où vous pouvez voir la ligne de commande spécifique envoyée au processus.

Plus précisément:

  • Exécuter Process Monitor
  • Filtre "Filtre ...
  • OperationisProcess Create " Ajouter
  • OperationisProcess Start " Ajouter
  • D'accord
  • Exécutez votre build via VS et via la ligne de commande msbuild
  • Voir les arguments de ligne de commande dans la colonne Détail
8
Chris Schmich