Apa lokasi default untuk MSBuild logs?

101

Saya menggunakan Visual Studio Express 2012. Di manakah lokasi file log? Saya telah mencari di folder tempat solusi dan proyek saya disimpan, tetapi tidak dapat menemukan file .log.

Ini adalah konfigurasi untuk logging:

masukkan deskripsi gambar di sini

Hanxue
sumber
1
Tidak ada file .log default. Lihat di jendela Output.
Hans Passant
13
@Hans, Dalam kasus saya, jendela keluaran memiliki pesan yang mengatakan "informasi lebih lanjut tersedia di log pembangunan." jadi ada log terpisah di suatu tempat. Saya belum menemukannya.
Brandon Kuczenski

Jawaban:

106

File log dari Visual Studio hanya didukung untuk proyek C ++. Anda hanya perlu bekerja dengan jendela keluaran untuk orang lain.

Lihat utas serupa ini: VS2010: output log masuk minimal dan file log masuk mendetail

Dan jika Anda kebetulan melakukan ini untuk proyek C ++, file tersebut ada di :

... membangun log di direktori file perantara ... Lintasan dan nama log pembuatan diwakili oleh ekspresi makro MSBuild $(IntDir)\$(MSBuildProjectName).log,.

Dmitry Pavlov
sumber
14
Saya pikir itu hanya konyol dari Visual Studio untuk tidak memiliki log rinci dalam file. Oh baiklah, kenyataan yang harus saya terima. Terima kasih atas jawaban Anda, @Dmitry
Hanxue
8
@hanxue - Itu memang memiliki log. Log itu tidak dikirim ke file. Jika Anda menginginkan file log, jalankan msbuild dari baris perintah.
Ritch Melton
43
LALU MENGAPA TIDAK BEGITU KATAKAN :-(
Simon_Weaver
2
Tuhan. Sial. Mengapa ini bukan hanya properti dalam solusi? Mengapa kinerja jendela keluaran sangat buruk sehingga Anda dipaksa untuk mempertahankannya pada keluaran minimal sepanjang waktu, dan mengapa itu seperti 8 langkah untuk mengubah dari satu tingkat keluaran ke tingkat keluaran lainnya? Tolong perbaiki semua ini.
Yakobus
@James Saya rasa Anda bisa menulis makro dan menetapkannya ke tombol toolbar. Tautan ini dapat menjadi titik awal stackoverflow.com/questions/12062515/… dan vlasovstudio.com/visual-commander
Dmitry Pavlov
23

Dokumentasi msdn cukup jelas tentang ini (Dan Anda tidak akan menyukainya!):

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

Dimana dikatakan:

Untuk membuat file log build untuk proyek kode terkelola Pada bilah menu, pilih Build, Build Solution.

Di jendela Output, sorot informasi dari build, lalu salin ke Clipboard.

Buka editor teks, seperti Notepad, tempelkan informasi ke dalam file, lalu simpan.

C Johnson
sumber
15
Yang mana semuanya baik dan bagus sampai Anda menggunakan keluaran diagnostik dan VS memutuskan untuk membuang pengecualian 'kehabisan memori' saat Anda mencoba menyalin ke papan klip. Benar-benar keputusan yang sangat bodoh untuk tidak mendukung pengiriman log build ke file di IDE. Tapi hei ho, begitulah hidup.
Steve Pettifer
1
Masukkan build ke dalam file teks? msbuild mysln.sln> output.txt (mungkin perlu menambahkan parameter untuk itu agar sln Anda dapat dikompilasi, tetapi Anda harus dapat mengambilnya dari jendela keluaran vs iirc pada tingkat verbositas yang benar)
Daniel M
Biasanya ketika saya membangun di baris perintah, saya membuat sistem pembangunan saya mengeluarkan informasi minimal ke jendela terminal, tetapi log mendetail ke file. MSBuild bisa melakukan itu.
C Johnson
"Dan kamu tidak akan menyukainya!" Itu menceritakan semuanya dalam 6 kata, terima kasih
FIV
23

Gunakan keluaran build alih-alih masuk ke file. Alih-alih menyalin / menempel, cukup klik di suatu tempat di keluaran dan tekan CTRL + S untuk menyimpan. Visual Studio akan meminta Anda untuk lokasi (diuji dengan Visual Studio 2017, tapi saya berasumsi ini berfungsi di versi sebelumnya juga).

masukkan deskripsi gambar di sini

Dan Gøran Lunde
sumber
Ini bagus. Mereka juga harus meletakkan ini di menu konteks.
Kemilau
2

Meskipun benar bahwa VS tidak mengizinkan hal ini secara langsung, namun masih mungkin untuk membangun dengan MSBuild "di dalam" VS2015 dan mendapatkan keluaran jendela pembangunan dan file log, sebagai berikut: (Bisa dibilang ini sedikit hack.)

  1. Dalam solusi VS Managed Anda, tambahkan proyek baru (Sebut saja 'Make'). Sebuah. Jenis proyek yang Anda inginkan adalah proyek Visual C ++ / NMake.
  2. Tentukan perintah MSBuild yang Anda butuhkan pada baris perintah (lihat di bawah).
  3. Ubah konfigurasi solusi untuk membangun proyek NMake alih-alih proyek terkelola normal.

Ini akan membuat proyek yang memiliki baris perintah Build, Rebuild, dan Clean di mana Anda dapat menjalankan MSBuild secara langsung. Sebagai contoh:

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

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

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

Anda juga dapat menentukan beberapa baris perintah MSBuild.EXE untuk membangun banyak proyek. Untuk hasil build-the-whole-solution biasa, Anda hanya dapat menargetkan rakitan akhir akhir dan membiarkan grafik dependensi menghasilkan target individual.

Ini akan menghasilkan file .log, di mana NAMA adalah nama proyek NMake yang Anda gunakan. Dalam contoh di atas, lognya adalah make.log.

Contoh yang berfungsi tersedia di GitHub: https://github.com/bitblitz/VS_MsbuildExample (Diuji dengan VS2015)

Perhatikan bahwa membuat project individual secara langsung tetap akan membangun dengan perilaku VS normal, tetapi Anda dapat membuat solusi lengkap di dalam VS dan mendapatkan log build.

Brad
sumber
1
Tautan ke VS_MsbuildExample rusak.
JPaget
Halo @brad, apa yang terjadi dengan contoh Anda di GitHub?
Yann Duran
Memperbaiki github, maaf atas masalah. @Yann
Brad