MSBuild ile derleme günlüklerini alma

MSBuild ile komut satırı seçeneklerini kullanarak, ne kadar derleme verilerini gözden geçirmek istediğinizi ve derleme verilerini bir veya daha fazla dosyaya kaydetmek isteyip istemediğinizi belirtebilirsiniz. Derleme verilerini toplamak için özel bir günlükçü de belirtebilirsiniz. Bu konunun kapsamadığı MSBuild komut satırı seçenekleri hakkında bilgi için bkz . Komut satırı başvurusu.

Not

Visual Studio IDE kullanarak projeler derlerseniz, derleme günlüklerini gözden geçirerek bu derlemelerle ilgili sorunları giderebilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Derleme günlüğü dosyalarını görüntüleme, kaydetme ve yapılandırma.

Ayrıntı düzeyini ayarlama

Ayrıntı düzeyi belirtmeden MSBuild kullanarak bir proje oluşturduğunuzda, çıkış günlüğünde aşağıdaki bilgiler görüntülenir:

  • Son derece önemli olarak sınıflandırılan hatalar, uyarılar ve iletiler.

  • Bazı durum olayları.

  • Derlemenin özeti.

-verbosity (-v) anahtarını kullanarak çıkış günlüğünde ne kadar veri görüneceğini denetleyebilirsiniz. Sorun giderme için, en fazla bilgi sağlayan () veya diagnostic (ddiag ayrıntı düzeyini detailed kullanın.

-verbosity değerini olarak ayarladığınızda derleme işlemi daha yavaş ve -verbosity diagnostic değerini olarak ayarladığınızda daha da yavaş olabilir.detailed

msbuild MyProject.proj -t:go -v:diag

Ayrıntı ayarları

Aşağıdaki tabloda, günlük ayrıntı düzeyinin (sütun değerleri) günlüğe kaydedilen ileti türlerini (satır değerleri) nasıl etkilediği gösterilmektedir.

İleti türü / Ayrıntı Quiet Minimal Normal Detaylı Tanılama
Hatalar
Uyarılar
Yüksek Öneme Sahip İletiler
Normal önem derecesinde İletiler
Düşük öneme neden olan İletiler
Ek MSBuild altyapısı bilgileri

Derleme günlüğünü bir dosyaya kaydetme

Derleme verilerini bir dosyaya kaydetmek için -fileLogger (fl) anahtarını kullanabilirsiniz. Aşağıdaki örnek, derleme verilerini msbuild.log adlı bir dosyaya kaydeder.

msbuild MyProject.proj -t:go -fileLogger

Aşağıdaki örnekte, günlük dosyası MyProjectOutput.log olarak adlandırılır ve günlük çıkışının ayrıntı düzeyi olarak diagnosticayarlanır. Bu iki ayarı -fileLoggerParameters (flp) anahtarını kullanarak belirtirsiniz.

msbuild MyProject.proj -t:go -fl -flp:logfile=MyProjectOutput.log;verbosity=diagnostic

Daha fazla bilgi için bkz . Komut satırı başvurusu.

Günlük çıkışını birden çok dosyaya kaydetme

Aşağıdaki örnek, günlüğün tamamını msbuild1.log, yalnızca JustErrors.log hataları ve yalnızca JustWarnings.log uyarıları kaydeder. Örnek, üç dosyanın her biri için dosya numaralarını kullanır. Dosya numaraları -fl ve -flp anahtarlarından hemen sonra belirtilir (örneğin, -fl1 ve -flp1).

2 ve 3 dosyaları için -fileLoggerParameters (flp) anahtarları, her dosyaya nelerin adlandırılacağını ve her dosyaya nelerin ekleneceğini belirtir. 1. dosya için ad belirtilmediğinden , varsayılan msbuild1.log adı kullanılır.

msbuild MyProject.proj -t:go -fl1 -fl2 -fl3 -flp2:logfile=JustErrors.log;errorsonly -flp3:logfile=JustWarnings.log;warningsonly

Daha fazla bilgi için bkz . Komut satırı başvurusu.

İkili günlük kaydetme

-binaryLogger (bl) anahtarını kullanarak günlüğü sıkıştırılmış, ikili biçimde kaydedebilirsiniz. Bu günlük, derleme işleminin ayrıntılı bir açıklamasını içerir ve belirli günlük çözümleme araçları tarafından okunabilir.

Aşağıdaki örnekte binarylogfilename adlı bir ikili günlük dosyası oluşturulur.

-bl:binarylogfilename.binlog

İkili günlükleri, olup bitenleri görmeyi çok daha kolay hale getirecek şekilde görüntülemek için Yapılandırılmış günlük görüntüleyicisini kullanabilirsiniz.

Daha fazla bilgi için bkz . Komut satırı başvurusu.

Özel günlükçü kullanma

Arabirimi uygulayan ILogger yönetilen bir tür yazarak kendi günlükçünüzü yazabilirsiniz. Örneğin, e-postada derleme hataları göndermek, bunları bir veritabanına kaydetmek veya bir XML dosyasında günlüğe kaydetmek için özel bir günlükçü kullanabilirsiniz. Daha fazla bilgi için bkz . Günlükçü oluşturma.

MSBuild komut satırında, -logger anahtarını kullanarak özel günlükçü'leri belirtirsiniz. Varsayılan konsol günlükçüsünü devre dışı bırakmak için -noconsolelogger anahtarını da kullanabilirsiniz.