.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_1NET5_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.

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.1tanı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