Jaka jest domyślna lokalizacja dzienników MSBuild?

102

Używam programu Visual Studio Express 2012. Gdzie znajduje się plik dziennika? Szukałem w folderze, w którym przechowywane są moje rozwiązanie i projekty, ale nie mogę znaleźć żadnego pliku .log.

Oto konfiguracja logowania:

wprowadź opis obrazu tutaj

Hanxue
źródło
1
Nie ma domyślnego pliku .log. Spójrz w okno Wyjście.
Hans Passant,
13
@Hans, W moim przypadku w oknie danych wyjściowych są komunikaty „Więcej informacji jest dostępnych w dzienniku kompilacji”. więc gdzieś jest oddzielny dziennik. Jeszcze tego nie znalazłem.
Brandon Kuczenski

Odpowiedzi:

106

Plik dziennika z programu Visual Studio jest obsługiwany tylko w przypadku projektów C ++. Musisz tylko pracować z oknem wyjściowym dla innych.

Zobacz ten podobny wątek: VS2010: minimalne dane wyjściowe logowania kompilacji i szczegółowy plik dziennika logowania

A jeśli zdarzy ci się to zrobić dla projektu C ++, plik jest pod adresem :

... dziennik budowy w pośrednim plików katalogu ... ścieżka i nazwa dziennika budowy jest reprezentowana przez makro ekspresji MSBuild, $(IntDir)\$(MSBuildProjectName).log.

Dmitry Pavlov
źródło
14
Myślę, że to po prostu głupie, że Visual Studio nie ma szczegółowego rejestrowania w pliku. No cóż, rzeczywistość, którą muszę zaakceptować. Dziękuję za odpowiedź, @Dmitry
Hanxue
8
@hanxue - ma dziennik. Ten dziennik po prostu nie jest wysyłany do pliku. Jeśli chcesz plik dziennika, uruchom msbuild z wiersza poleceń.
Ritch Melton,
43
DLACZEGO NIE MÓWI TAK :-(
Simon_Weaver
2
Bóg. Cholera. Dlaczego nie jest to tylko właściwość rozwiązania? Dlaczego i tak okno wyjściowe ma tak straszną wydajność, że jesteś zmuszony utrzymywać go na minimalnym poziomie przez cały czas i dlaczego zmiana z jednego poziomu wyjściowego na drugi jest jak 8 kroków? Napraw to, proszę.
James,
@James Myślę, że mógłbyś napisać makro i przypisać je do przycisku paska narzędzi. Te linki mogą być punktem startowym stackoverflow.com/questions/12062515/… i vlasovstudio.com/visual-commander
Dmitry Pavlov
25

Użyj danych wyjściowych kompilacji zamiast rejestrowania do pliku. Zamiast kopiować / wklejać, po prostu kliknij gdzieś w wyniku i naciśnij CTRL + S, aby zapisać. Program Visual Studio wyświetli monit o podanie lokalizacji (testowane w programie Visual Studio 2017, ale zakładam, że działa to również we wcześniejszych wersjach).

wprowadź opis obrazu tutaj

Dan Gøran Lunde
źródło
To jest dobre. Powinni również umieścić to w menu kontekstowym.
Sheen
23

Dokumentacja msdn jest dość jasna na ten temat (i ci się to nie spodoba!):

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

Gdzie jest napisane:

Aby utworzyć plik dziennika kompilacji dla projektu kodu zarządzanego Na pasku menu wybierz opcję Kompiluj, kompiluj rozwiązanie.

W oknie Dane wyjściowe podświetl informacje z kompilacji, a następnie skopiuj je do Schowka.

Otwórz edytor tekstu, taki jak Notatnik, wklej informacje do pliku, a następnie zapisz go.

C Johnson
źródło
16
Wszystko jest w porządku, dopóki nie użyjesz wyjścia diagnostycznego, a VS zdecyduje się wyrzucić wyjątek „braku pamięci”, gdy spróbujesz skopiować do schowka. Naprawdę jest to zasadniczo głupia decyzja, aby nie obsługiwać wysyłania dziennika kompilacji do pliku w IDE. Ale hej ho, takie jest życie.
Steve Pettifer
1
Przełożyć kompilację do pliku tekstowego? msbuild mysln.sln> output.txt (prawdopodobnie będzie trzeba dodać parametry, aby skompilować sln, ale powinieneś być w stanie złapać to z iirc okna wyjściowego na odpowiednim poziomie szczegółowości)
Daniel M
Zwykle, gdy buduję w wierszu poleceń, moje systemy kompilacji wyświetlają minimalne informacje w oknie terminala, ale szczegółowy dziennik do pliku. MSBuild może to zrobić.
C Johnson
- I ci się to nie spodoba! To mówi wszystko w 6 słowach, dzięki
FIV
2

Chociaż prawdą jest, że VS nie pozwala na to bezpośrednio, nadal można zbudować za pomocą programu MSBuild „wewnątrz” VS2015 i uzyskać zarówno dane wyjściowe okna kompilacji, jak i plik dziennika w następujący sposób: (Prawdopodobnie jest to trochę hack).

  1. W rozwiązaniu VS Managed dodaj nowy projekt (nazwijmy go „Make”). za. Żądany typ projektu to projekt Visual C ++ / NMake.
  2. Zdefiniuj potrzebne polecenia programu MSBuild w wierszu polecenia (patrz poniżej).
  3. Zmień konfigurację rozwiązania, aby skompilować projekt NMake zamiast normalnych projektów zarządzanych.

Spowoduje to utworzenie projektu zawierającego wiersze poleceń Build, Rebuild i Clean, w których można bezpośrednio wykonać program MSBuild. Na przykład:

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

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

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

Możesz również określić wiele wierszy poleceń programu MSBuild.EXE, aby utworzyć wiele projektów. W przypadku zwykłego wyniku kompilacji całego rozwiązania można kierować tylko końcowe zestawy końcowe i pozwolić, aby wykres zależności wygenerował poszczególne cele.

Spowoduje to utworzenie pliku .log, gdzie NAZWA jest nazwą projektu NMake, którego użyłeś. W powyższym przykładzie dziennikiem byłby make.log.

Działający przykład jest dostępny na GitHub: https://github.com/bitblitz/VS_MsbuildExample (testowane z VS2015)

Zwróć uwagę, że bezpośrednie budowanie poszczególnych projektów nadal będzie budować z normalnym zachowaniem VS, ale możesz zbudować pełne rozwiązanie w programie VS i uzyskać dzienniki kompilacji.

Ćwiek
źródło
1
Link do VS_MsbuildExample jest uszkodzony.
JPaget
Hej @brad, co się stało z twoim przykładem na GitHubie?
Yann Duran
Naprawiono github, przepraszam za kłopoty. @YannDuran
Brad