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.
Bu makale aşağıdaki derleyici uyarılarını kapsar:
- CS8022, CS8023, CS8024, CS8025, CS8026, CS8059, CS8107, CS8302, CS8320, CS8370, CS8400, CS8773, CS8936, CS9058: Özellik kullanılamaz. Daha yeni bir dil sürümü kullanın.
- CS8058: Özellik deneyseldir.
- CS8192: Sağlanan dil sürümü desteklenmiyor veya geçersiz
- CS8303: Belirtilen dil sürümünün başında sıfır olamaz
- CS8304: Derleyici sürümü dil sürümünden küçük
- CS1738: Tüm sabit bağımsız değişkenler belirtildikten sonra adlandırılmış bağımsız değişken belirtimleri görünmelidir.
- CS8306: Tuple öğe adı çıkarılır.
- CS8314: Belirli bir türdeki ifade, bir tür deseni tarafından işlenemez
- CS8371: Otomatik özelliklerdeki alan hedefli öznitelikler dil sürümünde desteklenmez
-
CS8401: Bir ilişkilendirilmiş metin dizesi olarak
@$yerine$@kullanmak için daha yeni bir dil sürümü kullanın. - CS8511: Türün ifadesi, tür deseni tarafından işlenemez.
- CS8627: Null atanabilir tür parametresinin değer türü veya null atanamayan başvuru türü olduğu bilinmelidir
- CS8630: Geçersiz null özellik seçenekleri. Daha yeni bir dil sürümü kullan
- CS8652: Değiştirici bu öğe için geçerli değil.
- CS8704: Tür, arabirim üyesini uygulamaz. Genel olmayan üyeyi örtük olarak uygulayamaz.
- CS8706: Tür arabirim üyesini uygulayamaz çünkü bu sürümde bir özellik mevcut değil.
- CS8904: Geçersiz varyans: Tür parametresi geçerli olmalıdır.
- CS8912: Korumalı 'Object.ToString' ile bir kayıttan devralma desteklenmez.
- CS8919: Hedef çalışma zamanı arabirimlerdeki statik soyut üyeleri desteklemediğinden belirtilen arabirim üyesi türü uygulanamıyor
- CS8929: Hedef çalışma zamanı arabirimlerdeki statik soyut üyeleri desteklemediğinden yöntem türdeki arabirim üyesini uygulayamıyor.
- CS8957: Türler arasında ortak bir tür bulunamadığından koşullu ifade dil sürümünde geçerli değil.
- CS8967: Verbatim olmayan arayüzlü bir dizenin içindeki yeni satırlar C#'da desteklenmez
- CS9041: C# derleyicisinin bu sürümü tarafından desteklenmeyen derleyici özelliği gerektirir.
- CS9014: Hata: Atanmamış olabilecek bir özelliğin kullanımı. Özelliği otomatik varsayılan yapın.
- CS9015: Hata: Atanmamış olabilecek alanın kullanımı. Alanı otomatik olarak varsayılana yükseltin.
- CS9016: Uyarı: Atanmamış olabilecek özelliğin kullanımı. Özelliği otomatik olarak varsayılana yükseltin.
- CS9017: Uyarı: Atanmamış olabilecek alanın kullanımı. Alanı otomatik olarak varsayılana yükseltin.
- CS9064: Hedef çalışma zamanı ref alanlarını desteklemiyor.
- CS9103: Tanınmayan bir RefSafetyRulesAttribute sürümüne sahip modülde '11' sürümü bekleniyor.
- CS9171: Hedef çalışma zamanı satır içi dizi türlerini desteklemez.
-
CS9194: Bağımsız değişken,
refanahtar sözcükle geçirilemez.refbağımsız değişkenleriniinparametrelere geçmek için dil sürümünü 12 veya üzerine yükseltin. - CS9202: Özellik C# 12.0'da kullanılamaz. Lütfen daha yeni bir dil sürümü kullanın
- CS9211: 'Experimental' özniteliğinin diagnosticId bağımsız değişkeni geçerli bir tanımlayıcı olmalıdır.
- CS9240: Hedef çalışma zamanı başv benzeri genel değerleri desteklemez.
- CS9260: Özellik C# 13.0'da kullanılamaz. Lütfen daha yeni bir dil sürümü kullanın*
- CS9268: Tür yalnızca değerlendirme amaçlıdır ve gelecekteki güncelleştirmelerde değiştirilebilir veya kaldırılmaya tabidir. Devam etmek için bu tanılamayı gizleme.
- CS9269: UnscopedRefAttribute yalnızca C# 11 veya sonraki sürümlerde ya da net7.0 veya üzerini hedeflerken geçerlidir.
-
CS9271: '
Microsoft.CodeAnalysis.EmbeddedAttribute' türü genel olmayan, iç, korumalı, statik olmayan, parametresiz bir oluşturucuya sahip olmalı, System.Attribute'ten devralınmalı ve herhangi bir türe uygulanabilmelidir. - CS9327: Özellik C# 14.0'da kullanılamaz. Daha yeni bir dil sürümü kullanın.
- CS9328: Yöntem şu anda çalışma zamanı tarafından desteklenmeyen zaman uyumsuz bir özellik kullanır.
Ayrıca, aşağıdaki hatalar ve uyarılar son sürümlerdeki yapı başlatma değişiklikleriyle ilgilidir:
- CS0171, CS8881: Denetim çağırana döndürülmeden önce otomatik olarak uygulanan 'name' özelliğinin yedekleme alanı tam olarak atanmalıdır.
- CS0188, CS8885: Tüm alanları atanmadan önce 'this' nesnesi kullanılamaz
- CS0843, CS8880: Denetim çağırana döndürülmeden önce otomatik olarak uygulanan 'name' özelliği için yedekleme alanı tam olarak atanmalıdır
- CS8305: Özellik yalnızca değerlendirme amaçlıdır ve gelecekteki güncelleştirmelerde değiştirilebilir veya kaldırılmaya tabidir.
- CS9204: Tür yalnızca değerlendirme amaçlıdır ve gelecekteki güncelleştirmelerde değiştirilebilir veya kaldırılmaya tabidir. Devam etmek için bu tanılamayı gizleme.
Tüm bu hataların ve uyarıların ardındaki neden, yüklenen derleyicinin projenizin seçtiği sürümden daha yeni bir C# sürümünü desteklemesidir. C# derleyicisi önceki sürümlere uygun olabilir. Söz dizimini önceki bir C# sürümünde doğrulayabilir veya projenizin eski kitaplıkları veya çalışma zamanlarını desteklemesi gerektiği için doğrulayabilirsiniz.
Bu hataları ve uyarıları gidermenin iki olası nedeni ve üç yolu vardır.
Hedef çerçevenizi güncelleştirme
Derleyici, şu kurallara göre bir varsayılan belirler:
| Hedef | Sürüm | Varsayılan C# dil sürümü |
|---|---|---|
| .NET | 11.x | C# 15 |
| .NET | 10.x | C# 14 |
| .NET | 9.x | C# 13 |
| .NET | 8.x | C# 12 |
| .NET | 7.x | C# 11 |
| .NET | 6.x | C# 10 |
| .NET | 5.x | C# 9.0 |
| .NET Çekirdeği | 3.x | C# 8.0 |
| .NET Çekirdeği | 2.x | C# 7.3 |
| .NET Standard | 2.1 | C# 8.0 |
| .NET Standard | 2.0 | C# 7.3 |
| .NET Standard | 1.x | C# 7.3 |
| .NET Çerçevesi | tümü | C# 7.3 |
Seçtiğiniz çerçeve gereken dil sürümüyle eşleşmiyorsa hedef çerçeveyi yükseltebilirsiniz.
Eşleşen dil sürümünü seçin
Proje dosyanızda daha eski bir hedef çerçeve seçilmiş olabilir. öğesini proje dosyanızdan kaldırırsanız LangVersion , derleyici önceki bölümde listelenen varsayılan değeri kullanır. Aşağıdaki tabloda tüm geçerli C# dil sürümleri gösterilmektedir. Daha yeni özellikleri etkinleştirmek için belirli bir dil sürümü de belirtebilirsiniz.
| Değer | Anlamı |
|---|---|
preview |
Derleyici, en son önizleme sürümündeki tüm geçerli dil söz dizimini kabul eder. |
latest |
Derleyici, derleyicinin en son yayımlanan sürümünden (küçük sürüm dahil) söz dizimini kabul eder. |
latestMajorveya default |
Derleyici, en son yayımlanan derleyici ana sürümünün söz dizimini kabul eder. |
15.0 |
Derleyici yalnızca C# 15 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
14.0 |
Derleyici yalnızca C# 14 veya daha düşük bir sürümde bulunan söz dizimini kabul eder. |
13.0 |
Derleyici yalnızca C# 13 veya daha düşük bir sürümde bulunan söz dizimini kabul eder. |
12.0 |
Derleyici yalnızca C# 12 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
11.0 |
Derleyici yalnızca C# 11 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
10.0 |
Derleyici yalnızca C# 10 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
9.0 |
Derleyici yalnızca C# 9 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
8.0 |
Derleyici yalnızca C# 8.0 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
7.3 |
Derleyici yalnızca C# 7.3 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
7.2 |
Derleyici yalnızca C# 7.2 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
7.1 |
Derleyici yalnızca C# 7.1 veya daha düşük bir sürüme dahil edilen söz dizimini kabul eder. |
7 |
Derleyici yalnızca C# 7.0 veya daha düşük bir sürüme dahil edilen söz dizimini kabul eder. |
6 |
Derleyici yalnızca C# 6.0 veya daha düşük bir sürüme dahil edilen söz dizimini kabul eder. |
5 |
Derleyici yalnızca C# 5.0 veya daha düşük bir sürüme dahil edilen söz dizimini kabul eder. |
4 |
Derleyici yalnızca C# 4.0 veya daha düşük bir sürüme dahil edilen söz dizimini kabul eder. |
3 |
Derleyici yalnızca C# 3.0 veya daha düşük bir sürümde yer alan söz dizimini kabul eder. |
ISO-2veya 2 |
Derleyici yalnızca ISO/IEC 23270:2006 C# (2.0) içinde yer alan söz dizimini kabul eder. |
ISO-1veya 1 |
Derleyici yalnızca ISO/IEC 23270:2003 C# (1.0/1.2) içinde yer alan söz dizimini kabul eder. |
Dil başvurusu bölümündeki Dil sürümünü yapılandırma makalesinde her çerçeve sürümü için desteklenen dil sürümleri hakkında daha fazla bilgi edinebilirsiniz.
Güncelleştirilmiş özellikten kaçının
Eski kitaplıkları veya çalışma zamanlarını desteklemeniz gerekiyorsa, daha yeni özellikleri kullanmaktan kaçınmanız gerekebilir.
Deneysel özellikleri etkinleştirme
Deneysel özelliklerin tanılamaları, deneysel özelliği kullanmak için devre dışı bırakılabilir.
Uyarı
Deneysel özellikler değişikliklere tabidir. API'ler değişebilir veya gelecekteki güncelleştirmelerde kaldırılabilir. Deneysel özellikleri dahil etmek, kitaplık yazarlarının gelecekteki gelişime yönelik fikirler ve kavramlar hakkında geri bildirim almalarının bir yoludur. Deneysel olarak işaretlenmiş herhangi bir özelliği kullanırken çok dikkatli olun.
Ayrıca, kendi deneysel özelliklerinizi System.Diagnostics.CodeAnalysis.ExperimentalAttribute kullanarak bildirebilirsiniz. Deneysel özellik için kullanılan tanımlayıcı geçerli bir tanımlayıcı değilse, derleyici CS9211'i yayar.
Yapı (struct) başlatmada uyumsuzluk yaratan değişiklikler
Tüm bu hatalar ve uyarılar, struct türlerinin alanlarına erişilmeden önce düzgün bir şekilde başlatılmasını sağlamaya yardımcı olur. C# öğesinin önceki sürümlerinde, herhangi bir oluşturucudaki bir yapıdaki tüm alanları açıkça atamanız gerekir. Parametresiz oluşturucu tüm alanları varsayılan değerlerine başlatır. Sonraki sürümlerde, tüm oluşturucular tüm alanları başlatır. Alan açıkça ayarlanır, alan başlatıcıda ayarlanır veya varsayılan değerine ayarlanır.
- CS0171, CS8881: Denetim çağırana döndürülmeden önce otomatik olarak uygulanan 'name' özelliğinin yedekleme alanı tam olarak atanmalıdır.
- CS0188, CS8885: Tüm alanları atanmadan önce 'this' nesnesi kullanılamaz
- CS0843, CS8880: Denetim çağırana döndürülmeden önce otomatik olarak uygulanan 'name' özelliği için yedekleme alanı tam olarak atanmalıdır
Dil sürümünüzü C# 11'e yükselterek bu hatayı giderebilirsiniz; her struct oluşturucu tüm alanları başlatır. Bu olası bir seçenek değilse, aşağıdaki örnekte gösterildiği gibi varsayılan oluşturucuyu açıkça çağırmanız gerekir:
struct S
{
public int AIProp { get; set; }
public S(int i){} //CS0843
// Try the following lines instead.
// public S(int i) : this()
// {
// AIProp = i;
// }
}
class Test
{
static int Main()
{
return 1;
}
}
Uygulamaya özgü öznitelikler
-
CS9271: '
Microsoft.CodeAnalysis.EmbeddedAttribute' türü genel olmayan, iç, korumalı, statik olmayan, parametresiz bir oluşturucuya sahip olmalı, System.Attribute'ten devralınmalı ve herhangi bir türe uygulanabilmelidir.
Derleyici, kaynak kodunuz için gerektiğinde bu özniteliğin kaynağını oluşturur. Bu türü bildirmemelisiniz.