Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşağıdaki yordamlar Visual Studio projenizdeki derleme sorunlarını tanılamanıza ve gerekirse araştırma için Microsoft'a göndermek üzere bir günlük oluşturmanıza yardımcı olabilir.
Özellik değeri yok sayıldı
Bir proje özelliği belirli bir değere ayarlanmış olarak görünüyorsa ancak özelliğin derleme üzerinde hiçbir etkisi yoksa şu adımları izleyin:
Visual Studio sürümünüze karşılık gelen Visual Studio Geliştirici Komut İstemi'ni açın.
Çözüm yolunuz, yapılandırmanız ve proje adınızın değerlerini değiştirdikten sonra aşağıdaki komutu çalıştırın:
MSBuild /p:SolutionDir="c:\MySolutionDir\";Configuration="MyConfiguration";Platform="Win32" /pp:out.xml MyProject.vcxprojBu komut bir "önceden işlenmiş" MSBuild proje dosyası (out.xml) oluşturur. Tanımlandığı yeri görmek için bu dosyada belirli bir özelliği arayabilirsiniz.
Bir özelliğin son tanımı, derlemenin ne tükettiğidir. Özellik iki kez ayarlanırsa, ikinci değer ilk değerin üzerine yazar. Ayrıca, MSBuild projeyi birkaç geçişte değerlendirir:
- PropertyGroups ve Importlar
- Öğe Tanım Grupları
- ItemGroups
- Targets
Bu nedenle, aşağıdaki sıra verilmiştir:
<PropertyGroup>
<MyProperty>A</MyProperty>
</PropertyGroup>
<ItemGroup>
<MyItems Include="MyFile.txt"/>
</ItemGroup>
<ItemDefinitionGroup>
<MyItems>
<MyMetadata>$(MyProperty)</MyMetadata>
</MyItems>
</ItemDefinitionGroup>
<PropertyGroup>
<MyProperty>B</MyProperty>
</PropertyGroup>
MyFile.txt öğesinin MyMetadata değeri, derleme sırasında B olarak değerlendirilir ve bu değer boş ya da A değildir.
Artımlı derleme olması gerekenden daha fazlasını oluşturuyor
MSBuild gereksiz yere bir projeyi veya proje öğesini yeniden oluşturuyorsa, ayrıntılı veya ikili derleme günlüğü oluşturun. Günlükte gereksiz yere oluşturulmuş ya da derlenmiş dosyaları arayın. Çıktı şuna benzer:
Task "CL"
Using cached input dependency table built from:
F:\test\Project1\Project1\Debug\Project1.tlog\CL.read.1.tlog
Outputs for F:\TEST\PROJECT1\PROJECT1\PROJECT1.CPP:
F:\TEST\PROJECT1\PROJECT1\DEBUG\PROJECT1.OBJ
Project1.cpp will be compiled because F:\TEST\PROJECT1\PROJECT1\PROJECT1.H was modified at 6/5/2019 12:37:09 PM.
Outputs for F:\TEST\PROJECT1\PROJECT1\PROJECT1.CPP:
F:\TEST\PROJECT1\PROJECT1\DEBUG\PROJECT1.OBJ
Write Tracking Logs:
Debug\Project1.tlog\CL.write.1.tlog
Visual Studio IDE'de (ayrıntılı çıktı penceresi ayrıntısıyla) derliyorsanız, Çıkış Penceresi her projenin güncel olmama nedenini görüntüler.
1>------ Up-To-Date check: Project: Project1, Configuration: Debug Win32 ------
1>Project is not up-to-date: build input 'f:\test\project1\project1\project1.h' was modified after the last build finished.
Ayrıntılı günlük oluşturma
- Araçlar>Seçenekleri bölmesini açın ve Tüm Ayarlar>Projeleri ve Çözümleri>Derleme ve Çalıştırma bölümünü genişletin.
- Araçlar>Seçenekleri iletişim kutusunu açın ve Projeler ve Çözümler>Derleme ve Çalıştırma bölümünü genişletin.
Açılan listeleri kullanın ve hem MSBuild projesi derleme çıkışı ayrıntı düzeyini hem de MSBuild projesi derleme günlük dosyası ayrıntı seçeneklerini Ayrıntılı olarak ayarlayın.
İlki Çıkış Penceresinde derleme ayrıntı düzeyini, ikincisi ise derleme sırasında her projenin ara dizininde
{projectname}.logoluşturulan dosyada derleme ayrıntı düzeyini denetler.Visual Studio geliştirici komut isteminde, gerçek yolunuzu ve yapılandırma değerlerinizi değiştirerek şu komutlardan birini girin:
MSBuild /p:Configuration="MyConfiguration";Platform="x86" /fl MySolution.slnveya
MSBuild /p:/p:SolutionDir="c:\MySolutionDir\";Configuration="MyConfiguration";Platform="Win32" /fl MyProject.vcxprojMSBuild'i çalıştırdığınız dizinde bir
MSBuild.logdosya oluşturulur.
Araştırma için MSBuild ikili günlük dosyalarını sağlayın
MSBuild ayrıntılı bir ikili günlük dosyası yakalama özelliğine sahiptir. Oluşturma sorunu yaşıyorsanız ve ikili günlük sağlayabiliyorsanız, günlük sorunu araştırmak için yararlı olabilir.
Ancak, istemeden istediğinizden daha fazla bilgi paylaşmadığınızdan emin olmak için ikili günlükte ne tür bilgilerin yakalandığını bilmeniz gerekir. İkili günlük, derlemenizin yaptığı hemen hemen her şeyi yakalar; proje dosyalarınızın ve örneğin .props ve .targets gibi içe aktardıkları dosyaların içerikleri, derleme sırasında çalıştırılan tüm görevler, giriş ve çıkışların yanı sıra bu MSBuild oturumunda erişilen ortam değişkenlerini de içerir. Genellikle derlenen kaynak dosyaların içeriğini içermez, ancak tam adlarını ve yollarını yakalar.
Uyarı
Bazı derleme ortamları, ortam değişkenlerini kullanarak gizli bilgileri erişilebilir hale getirir. İkili günlük paylaşmadan önce, API belirteçlerini veya diğer önemli gizli bilgileri açığa çıkarmadığından emin olun.
Komut satırı derlemeleri için ikili günlükleri kayıt altına alma
MSBuild'e -bl parametresini (MSBuild.exe veya dotnet build) geçirerek bir ikili günlük dosyası oluşturabilirsiniz. Oluşturulan .binlog dosyanın içeriğini MSBuild Yapılandırılmış Günlük Görüntüleyicisi'ni kullanarak veya Tarayıcınızda Canlı Yapılandırılmış Günlük Görüntüleyicisi'ni kullanarak inceleyebilirsiniz. MSBuild, tarayıcınızda görüntülenen ikili günlüklerden veri yakalamaz.
Örnekler
dotnet build -bl
dotnet build -bl:SpecificStep.binlog
MSBuild.exe -bl:ServiceRelease.binlog -p:Configuration=Release
Ayrıca, ikili günlükler hakkında daha fazla ayrıntıya bakın.
Visual Studio aracılığıyla binary günlükleri yakalama
Tüm MSBuild çağrılarının günlüklerini yakalamak için:
MSBUILDDEBUGENGINE ortam değişkenini '1' olarak ayarlayın ve (isteğe bağlı olarak), yakalanan günlükleri depolamak için mevcut bir hedef klasöre MSBUILDDEBUGPATH ayarlayın. Ardından ortamı devralmak için Visual Studio'yu aynı kabuktan başlatın:
SET MSBUILDDEBUGENGINE=1
SET MSBUILDDEBUGPATH=C:\MSBuildReproLogs
devenv.exe MySolution.sln
$env:MSBUILDDEBUGENGINE = 1
$env:MSBUILDDEBUGPATH="C:\MSBuildReproLogs"
& "devenv.exe" MySolution.sln
MSBuild ikili günlükleri, ortam değişkeni aracılığıyla MSBUILDDEBUGPATH belirtilen bir konuma kaydedilir (veya geçerli bir klasörün MSBuild_Logs alt klasörüne ya da erişim haklarına bağlı olarak %temp% alt klasörüne varsayılan olarak kaydedilir).
Uyarı
Günlükler her MSBuild çağrısı (tasarım zamanı derlemeleri dahil) için kaydedilir ve eskilerini kaldırmadan klasörde tutulur; böylece günlük dosyalarının sayısı hızla artabilir. Kabul ortam değişkeninin yalnızca sorunun yeniden üretilmesi için kısa bir süre için ayarlanması önerilir (ancak bazı belirsiz sorunların birden çok yeniden oluşturma denemesine ihtiyaç duyabileceği anlaşılabilir).
Project System Tools uzantısını kullanarak ikili MSBuild günlüğü oluşturma
Visual Studio aracılığıyla binlogları yakalamak için Project System Tools deposundaki bu kılavuza bakın.
Project System Tools uzantısını indirin ve yükleyin.
Uzantı yüklendikten sonra, Diğer Windows'u> menüsünde bazı yeni öğeler görünür.
Visual Studio'da Derleme Günlüğü penceresini göstermek için Görüntüle>Diğer Pencereler>Derleme Günlüğü'nü seçin. Proje sisteminde hem normal hem de tasarım zamanı derlemelerini kaydetmeye başlamak için ilk araç çubuğu simgesini seçin.
Bir yapı kaydedildikten sonra Yapı Günlüğü penceresinde görüntülenir. Öğeye sağ tıklayın ve bağlam menüsünde Günlükleri Kaydet'i seçerek dosyanızı
.binlogkaydedin.
MSBuild Yapılandırılmış Günlük Görüntüleyicisi'ni kullanarak .binlog dosyalarınızı görüntüleyebilir ve arayabilirsiniz.