Dalgaları değiştirme
Değişiklik dalgası, MSBuild'de belirli bir bayrağı ortam değişkeni olarak belirterek geri çevirebileceğiniz bir davranış değişiklikleri kümesidir. Bunun amacı, sizi kesintiye neden olabilecek değişiklikler konusunda uyarmaktır, böylece bu değişiklikler standart işlevlere dönüşmeden önce bu değişikliklere uyum sağlama esnekliğine sahip olursunuz. Belirli bir değişiklik dalgasındaki tüm özellikler tek tek değil, yalnızca birlikte etkinleştirilebilir veya devre dışı bırakılabilir.
MSBuild'in yeni bir sürümüne yükselttiğinizde, bozulma olasılığı olan değişiklikler varsayılan olarak etkinleştirilir, ancak bir özellik derlemenizi olumsuz etkilerse, bu değişiklik dalgasını kolayca devre dışı bırakabilirsiniz. Her değişiklik dalgası bir MSBuild sürüm numarasıyla (örneğin, 16.8) tanımlanır, ancak değişiklik dalgasının ayarlanması, söz konusu MSBuild sürümündeki tüm değişiklikleri değil, yalnızca derleme işlemini etkileme olasılığı olan belirli özellikleri denetler. Her değişiklik dalgasındaki özelliklerin listesi bu makalenin devamında görüntülenir. Değişiklik dalgasını devre dışı bırakmak, daha yüksek sürümlerin değişiklik dalgalarını da devre dışı bırakır.
Değişiklik dalgası özelliklerini geri çevirme
Bir değişiklik dalgasında özellikleri devre dışı bırakmak için ortam değişkenini MSBuildDisableFeaturesFromVersion
devre dışı bırakmak istediğiniz özelliği içeren değişiklik dalgasına (veya MSBuild sürümüne) ayarlayın. Bu, özelliklerin geliştirildiği MSBuild sürümüdür. Değişiklik dalgalarının özelliklere eşlemini aşağıda bulabilirsiniz.
MSBuildDisableFeaturesFromVersion Değerleri
Geçerli bir değişiklik dalgasına ayarlamıyorsanız MSBuildDisableFeaturesFromVersion
belirli bir dalga için bir uyarı ve/veya varsayılan değer alırsınız. Aşağıdaki tabloda olası ayarlar gösterilmektedir:
MSBuildDisableFeaturesFromVersion Değer |
Sonuç | Uyarı alınsın mı? |
---|---|---|
Unset | Tüm değişiklik dalgalarını etkinleştirin; bu, her değişiklik dalgasının arkasındaki tüm özelliklerin etkinleştirildiği anlamına gelir. | No |
Geçerli ve geçerli bir değişiklik dalgası (örneğin, 16.8 ) |
Değişiklik dalgası 16.8 ve üzerinin arkasındaki tüm özellikleri devre dışı bırakın. |
No |
Geçersiz Değer (örneğin, 16.9 geçerli dalgalar 16.8 ve 16.10 olduğunda ) |
Varsayılan değer en yakın geçerli değerdir (artan). Örneğin, ayar 16.9 varsayılan olarak olarak ayarlanır 16.10 . |
No |
Döndürme Dışı (örneğin, 17.1 en yüksek dalga olduğunda 17.0 ) |
En yakın geçerli değere kelepçeleme. Örneğin, 17.1 için kelepçeler 17.0 , ve 16.5 kelepçeler için 16.8 |
Evet |
Geçersiz Biçim (örneğin, 16x8 , 17_0 , garbage ) |
Tüm değişiklik dalgalarını etkinleştirin; bu, her değişiklik dalgasının arkasındaki tüm özelliklerin etkinleştirildiği anlamına gelir. | Evet |
Dalgaları ve ilişkili özellikleri değiştirme
17.10
- AppDomain yapılandırması BinFmt kullanılmadan seri hale getirilir - özellik yalnızca BinaryFormatter'a çalışma zamanında düzenleme yoluyla izin veriliyorsa devre dışı bırakılabilir
MSBuild.runtimeconfig.json
- Önbellek SDK çözümleyicisi verileri işlem genelinde
17.8
- [RAR] SDK tarafından sağlanan başvurularda G/Ç yapmayın
- Kopyalamadan önce hedef dosyayı silme
- Karma görev için SHA1'den SHA256'ya geçme
- Özel türetilmiş BuildEventArgs kullanımdan kaldırılıyor - özellik yalnızca BinaryFormatter'a çalışma zamanında düzenleme yoluyla izin veriliyorsa devre dışı bırakılabilir
MSBuild.runtimeconfig.json
17.6
- Geçersiz özelliği hedef altında ayrıştırma
- Proje dizesi önbelleğini kaldırma
- İçeri aktarma için sağlanan arama yolu olmadığında hata günlüğe kaydetme
- Günlük derleme yükleri
- AnyHaveMetadataValue, boş bir liste geçirildiğinde false döndürür
- Günlük öğesi kendi kendini genişletme
17.4
- Derlemeleri yüklerken deps.json dosyasına saygı gösterin
- Platform Anlaşması sırasında varsayılan olarak düşün
Platform
- SDK bildirimlerine kabul edilen SDK adı eşleştirme deseni ekleme
- Geçersiz proje türlerini gösteren uyarı oluşturma
- MSBuild sunucusu
- Kültürleri doğrularken yeni CultureInfo API'lerini çağırma (yalnızca.NET Core)
17.0
- Scheduler, BuildParameters.DisableInprocNode'a uygun olmalıdır
- .NET Framework'te globbing regexes derlemeyin
- İçerik öğelerini geçişli olarak kopyalamak için varsayılan ayar
- Başvuru derlemeleri artık varsayılan olarak dizine
bin
yerleştirilmemiştir (buraya geri döndürülür ve buraya geri getirilir) - Hata ayıklama deneyimini geliştirin: GENEL anahtar MSBuildDebugEngine ekleyin; BuildManager'dan ikili günlükçü ekleme; statik grafı .dot dosyası olarak yazdırma
- BuildManager ve LoggingService'te kilitlenme düzeltilir
- Dosya günlükçü ve konsol günlükçü için diag düzeyini iyileştirme
- En iyi duruma getirilmiş sabit dosyalar güncel denetimler
- Dizin numaralandırması için Microsoft.IO.Redist ekleme
- ToolsetConfigurationSection'ın işlem genelinde önbelleğe alma
- RAR çıkış yollarını normalleştirme
Değişim Dalgaları Artık Dönüşte Değil
16.8
- NoWarn'i etkinleştirme
- Hedef/Görev atlanan günlük iletilerini 1024 karaktere atla
- Yanlış koşulla tam sürücü glob'larını genişletmeyin
16.10
- Bir koşuldaki özellik genişletmesinde boşluk olduğunda hata oluştu
- TargetPath ile Özel CopyToOutputDirectory Konumuna İzin Ver
- Kullanıcı adlarında belirli özel karakterler bulunan kullanıcıların exec kullanırken başarıyla oluşturulmasına izin verme
- SDK çözümlenemez olduğunda geri yükleme işlemlerini başarısız kılma
- Glob değerlendirmeyi iyileştirme
SSS
Değişiklik dalgalarını döndürmek için neden diğer tüm sürümleri hedefleyesiniz?
Etkilenen kişilerle tartışmak ve değişikliklere uyum sağlamaya yardımcı olmak için yeterli zaman olduğuna inanıyoruz.
Neden proje özelliği değil de ortam değişkeni?
MSBuild projeyi yüklemeden önce değişiklik dalgasının altına bir özellik yerleştirmek istediğimiz senaryolar vardır. Bu nedenle, değişiklik dalgaları ortam değişkenlerini kullanmayı gerektirir.
Neden kabul etme seçeneğini geri çeviresiniz?
Geri çevirme bizim için daha iyi bir yaklaşımdır, aksi takdirde bir özellik müşteri derlemelerini etkilediğinde büyük olasılıkla sınırlı geri bildirim alacağız.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin