Quel est l'emplacement par défaut des journaux MSBuild?

102

J'utilise Visual Studio Express 2012. Où est l'emplacement du fichier journal? J'ai cherché dans le dossier où ma solution et mes projets sont stockés, mais je ne trouve aucun fichier .log.

Voici la configuration pour la journalisation:

entrez la description de l'image ici

Hanxue
la source
1
Il n'y a pas de fichier .log par défaut. Regardez dans la fenêtre Sortie.
Hans Passant
13
@Hans, Dans mon cas, la fenêtre de sortie contient des messages disant "plus d'informations sont disponibles dans le journal de construction." il y a donc un journal séparé quelque part. Je ne l'ai pas encore trouvé.
Brandon Kuczenski

Réponses:

106

Le fichier journal de Visual Studio est uniquement pris en charge pour les projets C ++. Il vous suffit de travailler avec la fenêtre de sortie pour les autres.

Voir ce fil similaire: VS2010: journal de construction minimal dans la sortie et journal détaillé dans le fichier journal

Et au cas où vous le feriez pour un projet C ++, le fichier se trouve à :

... build journal dans le répertoire des fichiers intermédiaires ... Le chemin et le nom du journal de la construction est représentée par l'expression macro MSBuild, $(IntDir)\$(MSBuildProjectName).log.

Dmitry Pavlov
la source
15
Je pense que c'est ridicule de la part de Visual Studio de ne pas avoir de journalisation détaillée dans un fichier. Eh bien, une réalité que je dois accepter. Merci pour votre réponse, @Dmitry
Hanxue
8
@hanxue - Il a un journal. Ce journal n'est tout simplement pas envoyé dans un fichier. Si vous voulez un fichier journal, exécutez msbuild à partir de la ligne de commande.
Ritch Melton
44
ALORS POURQUOI NE LE
DIT
2
Dieu. Bon sang. Pourquoi n'est-ce pas simplement une propriété de la solution? Pourquoi la fenêtre de sortie est-elle si mauvaise de toute façon si vous êtes obligé de la garder sur une sortie minimale tout le temps, et pourquoi est-ce que 8 étapes pour passer d'un niveau de sortie à l'autre? Corrigez l'un de ces problèmes s'il vous plaît.
James le
@James Je suppose que vous pourriez être en mesure d'écrire une macro et de l'affecter au bouton de la barre d'outils. Ces liens pourraient être un point de départ stackoverflow.com/questions/12062515/… et vlasovstudio.com/visual-commander
Dmitry Pavlov
25

Utilisez la sortie de construction au lieu de vous connecter au fichier. Au lieu de copier / coller, cliquez simplement quelque part dans la sortie et appuyez sur CTRL + S pour enregistrer. Visual Studio vous demandera un emplacement (testé avec Visual Studio 2017, mais je suppose que cela fonctionne également dans les versions antérieures).

entrez la description de l'image ici

Dan Gøran Lunde
la source
C'est bon. Ils devraient également mettre cela dans le menu contextuel.
Sheen
23

La documentation msdn est assez claire à ce sujet (et vous ne l'aimerez pas!):

https://msdn.microsoft.com/en-us/library/jj651643.aspx

Où il est dit:

Pour créer un fichier journal de génération pour un projet de code managé Dans la barre de menus, choisissez Générer, Générer la solution.

Dans la fenêtre Sortie, mettez en surbrillance les informations de la génération, puis copiez-les dans le Presse-papiers.

Ouvrez un éditeur de texte, tel que le Bloc-notes, collez les informations dans le fichier, puis enregistrez-le.

C Johnson
la source
17
Ce qui est bien beau jusqu'à ce que vous utilisiez la sortie de diagnostic et que VS décide de lancer une exception «mémoire insuffisante» lorsque vous essayez de copier dans le presse-papiers. C'est vraiment une décision fondamentalement stupide de ne pas prendre en charge l'envoi du journal de construction dans un fichier de l'EDI. Mais bon ho, telle est la vie.
Steve Pettifer
1
Transférer la construction dans un fichier texte? msbuild mysln.sln> output.txt (il faudra probablement ajouter des paramètres à cela pour que votre sln compile, mais vous devriez pouvoir récupérer cela à partir de la fenêtre de sortie vs iirc au niveau de verbosité correct)
Daniel M
Habituellement, lorsque je construis sur la ligne de commande, je fais en sorte que mes systèmes de construction produisent des informations minimales dans la fenêtre du terminal, mais un journal détaillé dans un fichier. MSBuild peut le faire.
C Johnson
"Et tu ne vas pas aimer ça!" Cela dit tout en 6 mots, merci
FIV
2

Bien qu'il soit vrai que VS ne le permet pas directement, il est toujours possible de construire avec MSBuild "à l'intérieur" de VS2015 et d'obtenir à la fois la sortie de la fenêtre de construction et le fichier journal, comme suit: (C'est sans doute un peu un hack.)

  1. Dans votre solution VS Managed, ajoutez un nouveau projet (appelons-le «Make»). une. Le type de projet souhaité est le projet Visual C ++ / NMake.
  2. Définissez les commandes MSBuild dont vous avez besoin sur la ligne de commande (voir ci-dessous).
  3. Modifiez la configuration de la solution pour générer le projet NMake au lieu des projets gérés normaux.

Cela créera un projet qui a des lignes de commande Build, Rebuild et Clean où vous pouvez exécuter MSBuild directement. Par exemple:

Reconstruire: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

Construire: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

Nettoyer: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean

Vous pouvez également spécifier plusieurs lignes de commande MSBuild.EXE afin de générer plusieurs projets. Pour le résultat habituel de génération de la solution entière, vous pouvez cibler uniquement les assemblys finaux et laisser le graphique de dépendance générer les cibles individuelles.

Cela produira un fichier .log, où NOM est le nom du projet NMake que vous avez utilisé. Dans l'exemple ci-dessus, le journal serait make.log.

Un exemple fonctionnel est disponible sur GitHub: https://github.com/bitblitz/VS_MsbuildExample (Testé avec VS2015)

Notez que la création directe de projets individuels sera toujours construite avec le comportement VS normal, mais vous pouvez créer la solution complète dans VS et obtenir les journaux de construction.

Brad
la source
1
Le lien vers VS_MsbuildExample est rompu.
JPaget
Hey @brad, qu'est-il arrivé à votre exemple sur GitHub?
Yann Duran
Correction de github, désolé pour les problèmes. @YannDuran
Brad