.NET 5 hedeflendiğinde NETCOREAPP3_1 ön işlemci simgesi tanımlanmadı
.NET 5 RC2 ve sonraki sürümlerde projeler artık önceki sürümler için ön işlemci simgelerini tanımlamaz, yalnızca hedefledikleri sürüm için tanımlar. Bu, .NET Core 1.0 - 3.1 ile aynı davranıştır.
Sürüm kullanıma sunulmuştur
5.0 RC2
Açıklama değiştirildi
.NET 5 önizleme 7 ile RC1 arasında hedef net5.0
projeler hem hem de NETCOREAPP3_1
NET5_0
önişlemci sembollerini tanımlar. Bu davranış değişikliğinin amacı, .NET 5 ile başlayarak koşullu derleme simgelerinin birikmeli olmasıydı.
.NET 5 RC2 ve sonraki sürümlerde projeler yalnızca hedeflediği hedef çerçeve adlarına (TFM) yönelik simgeler tanımlar ve önceki sürümler için tanımlamaz.
Değişiklik nedeni
Önizleme 7'de yapılan değişiklik, müşteri geri bildirimleri nedeniyle geri döndürüldü. Önceki sürümler için sembollerin tanımlanması müşterileri şaşırtmış ve karıştırmış ve bazıları bunun C# derleyicisinde bir hata olduğunu varsayıyordu.
Önerilen eylem
Proje veya üzerini hedeflediğinde net5.0
mantığınızın #if
bunun NETCOREAPP3_1
tanımlandığını varsaymadığından emin olun. Bunun yerine, yalnızca NETCOREAPP3_1
proje açıkça hedeflendiğinde netcoreapp3.1
tanımlandığını varsayalım.
Örneğin, projeniz .NET Core 2.1 ve .NET Core 3.1 için çok hedefliyse ve .NET Core 3.1'de tanıtılan API'leri çağırırsanız mantığınız #if
aşağıdaki gibi görünmelidir:
#if NETCOREAPP2_1 || NETCOREAPP3_0
// Fallback behavior for old versions.
#elif NETCOREAPP
// Behavior for .NET Core 3.1 and later.
#endif
Etkilenen API’ler
Yok
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