MSBuild günlükleri için varsayılan konum nedir?


102

Visual Studio Express 2012 kullanıyorum. Günlük dosyasının konumu nerede? Çözümümün ve projelerimin depolandığı klasörde arama yaptım, ancak herhangi bir .log dosyası bulamıyorum.

Bu, günlük kaydı için yapılandırmadır:

görüntü açıklamasını buraya girin


1
Varsayılan bir .log dosyası yoktur. Çıktı penceresine bakın.
Hans Passant

13
@Hans, Benim durumumda, çıktı penceresinde "yapı günlüğünde daha fazla bilgi var" diyen mesajlar var. yani bir yerde ayrı bir kayıt var. Henüz bulamadım.
Brandon Kuczenski

Yanıtlar:


108

Visual Studio'daki günlük dosyası yalnızca C ++ projeleri için desteklenir. Sadece diğerleri için çıktı penceresi ile çalışmanız gerekir .

Bu benzer iş parçacığına bakın: VS2010: minimum derleme günlüğü çıktısı ve günlük dosyasında ayrıntılı günlük

Ve bunu bir C ++ projesi için yapmanız durumunda , dosya şu adrestedir :

... ara dosyalar dizininde günlüğü oluşturun ... Yapı günlüğünün yolu ve adı, MSBuild makro ifadesiyle temsil edilir $(IntDir)\$(MSBuildProjectName).log.


15
Bence bu, bir dosyada ayrıntılı günlük kaydı olmaması için Visual Studio'nun aptalca. Oh pekala, kabul etmem gereken bir gerçek. Cevabınız için teşekkürler, @Dmitry
Hanxue

8
@hanxue - Bir günlüğü var. Bu günlük bir dosyaya gönderilmez. Bir günlük dosyası istiyorsanız komut satırından msbuild komutunu çalıştırın.
Ritch Melton

47
NEDEN BU
SÖYLENMİYOR

2
Tanrı. Lanet olsun. Neden bu sadece çözümdeki bir özellik değil? Çıkış penceresi neden bu kadar korkunç bir performans sergiliyor, bu yüzden onu her zaman minimum çıktıda tutmak zorunda kalıyorsunuz ve neden bir çıktı düzeyinden diğerine geçmek 8 adım gibi? Lütfen bunlardan herhangi birini düzeltin.
James

@James Sanırım bir makro yazıp bunu araç çubuğu düğmesine atayabilirsiniz. Bu bağlantılar bir başlangıç ​​noktası olabilir stackoverflow.com/questions/12062515/… ve vlasovstudio.com/visual-commander
Dmitry Pavlov

26

Dosyaya günlüğe kaydetmek yerine derleme çıktısını kullanın. Kopyala / yapıştır yerine, çıktıda herhangi bir yere tıklayın ve kaydetmek için CTRL + S tuşlarına basın. Visual Studio sizden bir konum isteyecektir (Visual Studio 2017 ile test edilmiştir, ancak bunun önceki sürümlerde de çalıştığını varsayıyorum).

görüntü açıklamasını buraya girin


Bu iyi. Bunu bağlam menüsüne de koymalılar.
Sheen

23

Msdn belgeleri bu konuda oldukça açık (Ve bundan hoşlanmayacaksınız!):

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

Nerede söylüyor:

Yönetilen kod projesi için derleme günlük dosyası oluşturmak için Menü çubuğunda Oluştur, Çözüm Oluştur'u seçin.

Çıktı penceresinde, yapıdaki bilgileri vurgulayın ve ardından bunu Panoya kopyalayın.

Not Defteri gibi bir metin düzenleyici açın, bilgileri dosyaya yapıştırın ve ardından kaydedin.


17
Siz tanılama çıktısını kullanana ve VS, panoya kopyalamaya çalıştığınızda bir 'bellek yetersiz' istisnası atmaya karar verene kadar her şey yolunda ve iyidir. Yapı günlüğünün IDE'deki bir dosyaya gönderilmesini desteklememek gerçekten de temelde aptalca bir karardır. Ama hey ho, hayat böyle.
Steve Pettifer

1
Yapıyı bir metin dosyasına mı aktarmak istiyorsunuz? msbuild mysln.sln> output.txt (sln'nizi derlemek için muhtemelen buna parametreler eklemeniz gerekecektir, ancak bunu çıktı penceresi iirc ile doğru ayrıntı düzeyinde yakalayabilmeniz gerekir)
Daniel M

Genellikle komut satırını oluşturduğumda, derleme sistemlerimin terminal penceresine minimum bilgi, ancak bir dosyaya ayrıntılı bir günlük çıktısını veriyorum. MSBuild bunu yapabilir.
C Johnson

"Ve bundan hoşlanmayacaksın!" Bu her şeyi 6 kelimeyle anlatıyor, teşekkürler
FIV

2

VS'nin buna doğrudan izin vermediği doğru olsa da, MSBuild ile VS2015 "içinde" derleme yapmak ve aşağıdaki gibi hem derleme penceresi çıktısını hem de günlük dosyasını almak hala mümkündür: (Muhtemelen bu biraz hack'tir.)

  1. VS Yönetilen çözümünüze yeni bir proje ekleyin (Buna 'Yap' diyelim). a. İstediğiniz proje türü Visual C ++ / NMake projesidir.
  2. İhtiyacınız olan MSBuild komutlarını komut satırında tanımlayın (aşağıya bakın).
  3. Normal yönetilen projeler yerine NMake projesini oluşturmak için çözüm yapılandırmasını değiştirin.

Bu, MSBuild'i doğrudan çalıştırabileceğiniz Build, Rebuild ve Clean komut satırlarına sahip bir proje oluşturacaktır. Örneğin:

Yeniden oluşturma: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Clean,Build

İnşa etmek: MSBuild.exe /ds /v:diag /property:Configuration=Debug ..\BuildTest\BuildTest.csproj /t:Build

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

Birden çok proje oluşturmak için birden çok MSBuild.EXE komut satırı da belirtebilirsiniz. Olağan tüm çözümü derleme sonucu için yalnızca son son derlemeleri hedefleyebilir ve bağımlılık grafiğinin ayrı hedefleri oluşturmasına izin verebilirsiniz.

Bu, NAME, kullandığınız NMake projesinin adı olduğu bir .log dosyası oluşturur. Yukarıdaki örnekte, günlük make.log olacaktır.

GitHub'da çalışan bir örnek mevcuttur: https://github.com/bitblitz/VS_MsbuildExample (VS2015 ile test edilmiştir)

Doğrudan bireysel projeler oluşturmanın normal VS davranışıyla oluşturulmaya devam edeceğini unutmayın, ancak VS içinde tam çözümü oluşturabilir ve derleme günlüklerini alabilirsiniz.


1
VS_MsbuildExample bağlantısı kesildi.
JPaget

Hey @brad GitHub'daki örneğinize ne oldu?
Yann Duran

Github düzeltildi, sorun için özür dilerim. @YannDuran
Brad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.