Aracılığıyla paylaş


Ad alanlarını kullanma ve bildirmeyle ilgili uyarıları çözme

Bu makale aşağıdaki derleyici hatalarını kapsar:

  • CS0104: Hata: 'başvuru', 'tanımlayıcı' ile 'tanımlayıcı' arasında belirsiz bir başvurudur.
  • CS0116: Hata: Bir ad alanı, alanlar, yöntemler veya deyimler gibi üyeleri doğrudan içeremez.
  • CS0138: Hata: Ad alanı kullanan yönergesi yalnızca ad alanlarına uygulanabilir; 'type', ad alanı olmayan bir türdür.
  • CS0430: Hata: 'takma ad' extern takma adı bir /reference seçeneğinde belirtilmedi.
  • CS0431: Hata: Bir türü referans ettiği için 'identifier' takma adını :: ile kullanamazsınız. Bunun yerine . kullanın.
  • CS0432: Hata: Alias 'tanımlayıcı' bulunamadı.
  • CS0434: Hata: NamespaceName2'deki NamespaceName1 ad alanı, NamespaceName3'teki TypeName1 türüyle çakşınır.
  • CS0438: Hata: 'module_1' içindeki 'type' türü, 'module_2' içindeki 'ad alanı' ad alanıyla çakişer.
  • CS0439: Hata: Dış diğer ad bildirimi, ad alanında tanımlanan diğer tüm öğelerden önce gelmelidir.
  • CS0518: Hata: Önceden tanımlanmış 'tür' türü tanımlanmadı veya içeri aktarılamadı.
  • CS0576: Hata: 'namespace' ad alanı, 'identifier' takma adıyla çakışan bir tanım içeriyor.
  • CS0687: Hata: Ad alanı takma ad niteleyicisi :: her zaman bir türe veya ad alanına çözümlendiğinden burada geçersizdir. Bunun yerine . kullanmayı göz önünde bulundurun.
  • CS1022: Hata: Tür veya ad alanı tanımı ya da dosya sonu bekleniyor.
  • CS1529: Hata: Using yan tümcesi, extern diğer ad bildirimleri dışında ad alanında tanımlanan diğer tüm öğelerden önce olmalıdır.
  • CS1537: Hata: 'alias' kullanım diğer adı daha önce bu ad alanında göründü.
  • CS1671: Hata: Ad alanı bildiriminin değiştiricileri veya öznitelikleri olamaz.
  • CS1679: Hata: '/reference' için geçersiz extern diğer adı; 'identifier' geçerli bir tanımlayıcı değil.
  • CS1680: Hata: Geçersiz başvuru diğer adı seçeneği: 'alias=' -- eksik dosya adı.
  • CS1681: Hata: Global extern alias'ı yeniden tanımlayamazsınız.
  • CS1730: Hata: Derleme ve modül öznitelikleri, using yan tümceleri ve extern alias bildirimleri dışında, bir dosyada tanımlanan diğer tüm öğelerden önce olmalıdır.
  • CS2034: Hata: Extern diğer adını bildiren bir /reference seçeneği yalnızca bir dosya adına sahip olabilir. Birden çok diğer ad veya dosya adı belirtmek için birden çok /reference seçeneğini kullanın.
  • CS7000: Hata: Bir takma adın beklenmeyen kullanımı.
  • CS7007: Hata: Yönerge using static yalnızca türlere uygulanabilir. Bunun yerine bir using namespace yönerge düşünün.
  • CS7015: Hata: 'extern alias' bu bağlamda geçerli değil.
  • CS7021: Hata: Betik kodunda ad alanı bildirilemiyor.
  • CS8083: Hata: Takma ad ile nitelenmiş bir ad, bir ifade olarak kabul edilmez.
  • CS8085: Hata: Bir diğer ad bildirmek için 'using static' yönergesi kullanılamaz.
  • CS8914: Hata: Genel kullanım yönergesi ad alanı bildiriminde kullanılamaz.
  • CS8915: Hata: Genel kullanım yönergesi, genel olmayan tüm using yönergelerinin önünde olmalıdır.
  • CS8954: Hata: Kaynak dosya yalnızca bir dosya kapsamlı ad alanı bildirimi içerebilir.
  • CS8955: Hata: Kaynak dosya hem dosya kapsamlı hem de normal ad alanı bildirimlerini içeremez.
  • CS8956: Hata: Dosya kapsamlı ad alanı, bir dosyadaki diğer tüm üyelerin önünde olmalıdır.
  • CS9130: Hata: Takma ad bir ref türü olamaz.
  • CS9131: Hata: Sadece bir 'using' takma adı unsafe olabilir.
  • CS9132: Hata: Takma ad kullanımı, null atanabilir bir başvuru türü olamaz.
  • CS9133: Hata: static değiştirici değiştiriciden unsafe önce olmalıdır.
  • CS9162: Tür 'statik kullanma' için geçerli değil. Yalnızca bir sınıf, yapı, arabirim, sabit listesi, temsilci veya ad alanı kullanılabilir.

Ve aşağıdaki derleyici uyarıları:

  • CS0105: Uyarı: 'ad alanı' için kullanım yönergesi daha önce bu ad alanında görünüyordu.
  • CS0435: Uyarı: 'assembly' içindeki 'namespace' ad alanı, 'assembly' içindeki içeri aktarılan 'type' türüyle çakşılır. 'assembly' içinde tanımlanan ad alanını kullanma.
  • CS0436: Uyarı: 'assembly' içindeki 'type' türü, 'assembly' içindeki içeri aktarılan 'type2' türüyle çakışıyor. 'assembly' içinde tanımlanan tür kullanılıyor.
  • CS0437: Uyarı: 'assembly2' içindeki 'type' türü, 'assembly1' içindeki içeri aktarılan 'namespace' ad alanı ile çatışıyor. 'assembly' içinde tanımlanan tür kullanılıyor.
  • CS0440: Uyarı: global adlı bir diğer ad tanımlamak tavsiye edilmez, çünkü global:: her zaman bir diğer ad değil, genel ad alanına başvurur.
  • CS8019: Bilgi: Yönergesi kullanılarak gereksizdir.
  • CS8020: Bilgi: Kullanılmayan extern takma ad.
  • CS8933: Bilgi: Kullanım yönergesi daha önce genel kullanım olarak gösterildi.

Bu hatalar ve uyarılar yönergeler, using ad alanı bildirimleri veya türler ile ad alanları arasındaki adlandırma çakışmalarıyla ilgili sorunları gösterir. Aşağıdaki bölümlerde bu hatalar ve bunların nasıl düzeltilenleri açıklanmaktadır.

Yönergenin kullanımı

Aşağıdaki hatalar yönergelerle using ilgilidir:

  • CS0105: Daha önce bu ad alanında 'namespace' için bir using yönergesi vardı.
  • CS0430: Harici diğer ad 'alias' bir /reference seçeneğinde belirtilmedi.
  • CS0439: Bir harici takma ad bildirimi, ad alanında tanımlanan diğer tüm öğelerin öncesinde gelmelidir.
  • CS1529: Using cümlesi, extern diğer ad bildirimleri dışında, ad alanında tanımlanan diğer tüm öğelerin önünde olmalıdır.
  • CS1679: '/reference' için geçersiz extern diğer adı; 'identifier' geçerli bir tanımlayıcı değil.
  • CS1680: Geçersiz başvuru alias'ı seçeneği: 'alias=' -- eksik dosya ismi.
  • CS1681: Genel extern diğer adını yeniden tanımlayamazsınız.
  • CS1730: Bütünleştirilmiş kod ve modül öznitelikleri, yan tümceleri ve extern diğer ad bildirimlerini kullanma dışında bir dosyada tanımlanan diğer tüm öğelerin önünde olmalıdır.
  • CS2034: Extern diğer adını bildiren bir /reference seçeneği yalnızca bir dosya adına sahip olabilir. Birden çok diğer ad veya dosya adı belirtmek için birden çok /reference seçeneğini kullanın.
  • CS7015: 'extern alias' bu bağlamda geçerli değil.
  • CS8019: Kullanma yönergesi gereksiz.
  • CS8020: Kullanılmayan extern takma ad.
  • CS8933: Using yönergesi daha önce global using olarak görünmüştü.

Bu tanılamaları yöneten kurallar için using yönergesine ve extern alias dil başvuru kılavuzuna bakın. Olası düzeltmeler şunlardır:

  • Tüm using yönergeleri dosyanın en üstüne veya ad alanı bildiriminin en üstüne taşıyın. C# dili, yönergelerin using ad alanındaki diğer öğelerden (CS1529) önce gelmesini gerektirir.
  • Tüm extern alias bildirimleri herhangi bir using yönergeden önce taşıyın. Bu dil, extern takma adlarının using yönergeler (CS0439, CS7015) dahil olmak üzere diğer tüm öğelerden önce gelmesini gerektirir.
  • Tüm bütünleştirilmiş kod ve modül düzeyi özniteliklerini using yan tümcelerden ve extern alias bildirimlerden sonra, ancak herhangi bir tür bildiriminin önüne taşıyın. Özniteliklerin yönergeleri izlemesi, ancak türlerin önüne (CS1730) uyması gerekir.
  • Kaynak kodunuzdaki her extern alias bildirimin projenizin başvuru seçeneklerinde tanımlanmış karşılık gelen bir diğer adı olduğundan emin olun. Derleyici, belirtilmemiş bir diğer adı (CS0430) çözümleyemez.
  • Her extern takma adı için ayrı bir /reference seçenek kullanın, tek bir seçenekte birden çok takma adı birleştirmek yerine. Derleyici, başvuru seçeneği başına bir diğer ad gerektirir (CS2034).
  • /reference seçeneğinizdeki takma adın geçerli bir C# tanımlayıcısı olduğundan emin olun. Diğer ad, tanımlayıcı adlandırma kurallarına (CS1679) uymalıdır. Diğer ad başvurunuzda = işaretinden sonra bir dosya adı ekleyin. Derleyicinin, takma adın hangi derlemeye başvurduğunu (CS1680) bilmesi gerekir.
  • Extern global diğer adını yeniden tanımlamayı denemeyin. global , takma ad verilmemiş tüm referanslarla (CS1681) ilgili önceden tanımlanmış bir addır.
  • Yinelenen using yönergeleri kaldırın. Derleyici, aynı ad alanı birden çok kez içeri aktarıldığında uyarır (CS0105, CS8019, CS8933).
  • Kullanılmayan extern alias bildirimleri kaldırın. Derleyici, bir extern alias bildirildiğinde ancak kodunuzda (CS8020) hiçbir zaman başvurulmadığında bir tanılama mesajı verir.

Statik yönerge kullanma

Aşağıdaki hatalar yönergelerle using static ilgilidir:

  • CS0138: Ad alanı kullanma yönergesi yalnızca ad alanlarına uygulanabilir; 'type', ad alanı olmayan bir türdür.
  • CS7007: Yönerge using static yalnızca türlere uygulanabilir. Bunun yerine bir using namespace yönerge düşünün.
  • CS9133: static değiştirici unsafe değiştiricisinden önce olmalıdır.
  • CS9162: Tür 'statik kullanma' için geçerli değil. Yalnızca bir sınıf, yapı, arabirim, sabit listesi, temsilci veya ad alanı kullanılabilir.

Bu tanılamaları yöneten kurallar için using static directive dil başvurusuna bakın. Olası düzeltmeler şunlardır:

  • Bir türün üyelerini doğrudan içeri aktarırken static değiştiricisini ekleyin, çünkü static eklenmemesi, derleyiciye bir tür yerine bir ad alanını (CS0138) içeri aktardığınızı belirtir.
  • Ad alanını içeri aktarırken değiştiriciyi static kaldırın, çünkü using static ad alanları (CS7007) değil yalnızca türlere uygulanabilir. Diğer türler statik içeri aktarmalar için geçerli hedefler olmadığından (using static) bir yönergenin hedefinin bir sınıf, yapı, arabirim, numaralandırma veya temsilci olduğundan emin olun.
  • static değiştiriciyi unsafe değiştiricisinin önüne yerleştirin, çünkü dil değiştiricilerin belirli bir sırada olmasını gerektirir (CS9133).

Genel kullanım yönergesi

Aşağıdaki hatalar yönergelerle global using ilgilidir:

  • CS8914: Genel using yönergesi ad alanı bildiriminde kullanılamaz.
  • CS8915: Genel kullanım yönergesi, genel olmayan tüm kullanım yönergelerinin önünde olmalıdır.

Bu tanılamaları yöneten kurallar için global using yönergesi diline başvurun. Olası düzeltmeler şunlardır:

  • Genel using'ler proje genelinde uygulandığından ve bir ad alanı kapsamına alınamadığından (CS8914), global using yönergelerini herhangi bir ad alanı bildiriminin dışına, dosya kapsamına taşıyın.
  • Dil, yerel yönergelerin (global using) önüne genel yönergeler gerektirdiğinden, tüm using yönergeleri dosyadaki genel olmayan yönergelerin önüne yerleştirin.
  • Bir static global using yönerge, dosya yerel bir türe başvuramaz.

Dosya kapsamlı ad alanı

Aşağıdaki hatalar dosya kapsamlı ad alanlarıyla ilgilidir:

  • CS8954: Kaynak dosya yalnızca bir dosya kapsamlı ad alanı bildirimi içerebilir.
  • CS8955: Kaynak dosya hem dosya kapsamlı hem de normal ad alanı bildirimlerini içeremez.
  • CS8956: Dosya kapsamlı ad alanı, bir dosyadaki diğer tüm üyelerin önünde olmalıdır.

Bu tanılama kurallarını yöneten prensipler için file-scoped namespace dil başvurusuna bakın. Olası düzeltmeler şunlardır:

  • Dil, dosyadaki tüm türler (CS8954) için yalnızca tek bir dosya kapsamlı ad alanının ad alanını ayarlamasına izin verdiğinden, dosya başına yalnızca bir dosya kapsamlı ad alanı bildirimi kullanın.
  • Dil her iki stilin de (CS8955) karıştırılmasına izin vermediğinden, tek bir dosya içinde dosya kapsamlı veya blok kapsamlı ad alanı bildirimlerinden birini seçin.
  • Türler bildirilmeden önce ad alanının oluşturulması gerektiğinden dosya kapsamlı ad alanı bildirimini tüm tür bildirimlerinden önce taşıyın (CS8956).

Takma ad niteleyicisi

Aşağıdaki hatalar, takma ad tanımlayıcısıyla ilgilidir:

  • CS0431: 'tanımlayıcı' diğer adı :: ile kullanılamaz çünkü diğer ad bir türe başvurduğundan. Bunun yerine . kullanın.
  • CS0432: Alias 'tanımlayıcı' bulunamadı.
  • CS0440: global adlı bir diğer ad tanımlamak tavsiye edilmez, çünkü global:: her zaman bir diğer ad alanına değil, genel ad alanına başvurur.
  • CS0687: Ad alanı takma adı niteleyicisi :: her zaman bir türe veya ad alanına çözümlendiğinden burada geçersizdir. Bunun yerine . kullanmayı düşünün.
  • CS7000: Beklenmedik bir şekilde diğer adın kullanımı.
  • CS8083: Diğer adla nitelendirilmiş isim bir ifade türü değildir.

Bu tanılamaları yöneten kurallar için ad alanı takma adı dil referansına bakın. Olası düzeltmeler şunlardır:

  • Tür diğer adlarının üyelerine erişirken :: işleci yerine . işleci kullanın, çünkü :: niteleyici yalnızca ad alanı diğer adları için geçerlidir, tür diğer adları (CS0431, CS0687) için değil.
  • Referans verdiğiniz diğer adın using veya extern alias yönergesiyle bildirildiğinden emin olun, çünkü derleyici tanımlanmamış bir diğer adı (CS0432) çözemez.
  • Diğer ad niteleyiciyi yalnızca tür veya ad alanı adının beklendiği bağlamlarda kullanın çünkü diğer ad nitelenmiş adlar ifade olarak geçerli değildir (CS7000, CS8083).
  • Diğer adınız için global yerine farklı bir ad seçin, çünkü global genel ad alanına başvurmak üzere ayrılmıştır ve yeniden tanımlanamaz (CS0440).

Takma ad kısıtlamalarını kullanma

Aşağıdaki hatalar diğer adları kullanma kısıtlamalarıyla ilgilidir:

  • CS0576: 'ad alanı' ad alanı, 'identifier' diğer adıyla çakışan bir tanım içeriyor.
  • CS1537: 'alias' takma adı bu ad alanında daha önce görünmüştü.
  • CS8085: Diğer ad bildirmek için 'using static' yönergesi kullanılamaz.
  • CS9130: Diğer ad kullanmak bir ref tür olamaz.
  • CS9131: Yalnızca bir 'using' takma adı olabilir unsafe.
  • CS9132: Bir takma ad kullanımı null atanabilir bir başvuru türü olamaz.

Bu tanılamaları yöneten kurallar için alias kullanma dil referansına bakın. Olası düzeltmeler şunlardır:

  • Derleyici diğer ad ile var olan tanımı (CS0576) ayırt edemediğinden, diğer adınız için kapsamdaki mevcut tür veya ad alanı adlarıyla çakışmayan benzersiz bir ad seçin.
  • Ad alanı içinde her takma adı yalnızca bir kez kullanın, çünkü yinelenen takma ad bildirimleri belirsizliğe (CS1537) neden olur.
  • static Diğer ad bildirirken değiştiriciyi kaldırın, çünkü diğer adlar ve statik içeri aktarmalar birbirini dışlar - ya using static ile üyeleri içeri aktarın ya da using Alias = ile bir diğer ad oluşturun, ancak her ikisini birden kullanmayın (CS8085).

C# 12'den başlayarak, diğer adları kullanmak için aşağıdaki kısıtlamalar geçerlidir:

  • Bu parametre modifikatörleri tür diğer adı bağlamlarında (CS9130) geçerli olmadığından, kullanım diğer adıyla ref, in, veya out değiştiricilerini kullanmayın.
  • Değiştiriciyi yalnızca işaretçi türlerine başvuran diğer adlarla veya using static yönergeleriyle kullanın, çünkü diğer ad veya statik içe aktarma olmaksızın unsafe kullanımı izin verilmez (CS9131).
  • Başvuru türü için diğer ad oluştururken null atanamaz bir başvuru türü kullanın, çünkü null atanabilir başvuru türleri doğrudan diğer ad olarak kullanılamaz (CS9132).

Ad alanı bildirimleri

Aşağıdaki hatalar ad alanı bildirim kurallarıyla ilgilidir:

  • CS0116: Ad alanı alanlar, yöntemler veya deyimler gibi üyeleri doğrudan içeremez.
  • CS1022: Tür veya ad alanı tanımı ya da dosya sonu bekleniyor.
  • CS1671: Ad alanı bildiriminin değiştiricileri veya öznitelikleri olamaz.
  • CS7021: Betik kodunda ad alanı bildirilemez.

Bu tanılamaları yöneten kurallar için namespace anahtar sözcüğüne ve C# Programının Genel Yapısı dil referansına göz atın. Olası düzeltmeler şunlardır:

  • Ad alanları yalnızca tür bildirimlerini, iç içe yerleştirilmiş ad alanlarını ve yönergeleri (using) içerebileceğinden, tüm yöntemlerin, alanların ve özelliklerin doğrudan ad alanı içinde değil bir tür (sınıf, yapı, kayıt veya arabirim) içinde bildirildiğinden emin olun.
  • Bir ad alanı veya tür tanımından sonra fazladan bir kapanış ayracı, derleyici dosyanın sonunda beklenmeyen içerikle karşılaştığında (CS1022) hata ürettiğinden, kaynak dosyanızda eşleşmeyen küme ayraçlarını denetleyin.
  • Ad alanları değiştiricileri veya öznitelikleri desteklemediğinden (CS1671) ve öznitelikler bunlara uygulanamadığından, ad alanı bildirimlerinden herhangi bir erişim değiştiricisini veya özniteliği kaldırın.
  • Betik kodu ad alanı bildirimlerini (.csx.cs) desteklemeyen tek bir yürütme bağlamında değerlendirdiğinden, ad alanı bildirimlerini C# betik dosyalarından () ve normal kaynak dosyalarına ( ) taşıyın.

Namespace ve tür adlandırma çakışmaları

Aşağıdaki hatalar ve uyarılar, ad alanları ve türler arasındaki adlandırma çakışmalarıyla ilgilidir:

  • CS0104: 'reference', 'identifier' ile 'identifier' arasında belirsiz bir referanstır.
  • CS0434: NamespaceName2'deki NamespaceName1 ad alanı, NamespaceName3'teki TypeName1 türüyle çakişer.
  • CS0435: 'assembly' içindeki 'namespace' ad alanı, 'assembly' içindeki içeri aktarılan 'type' türüyle çakşılır. 'assembly' içinde tanımlanan ad alanını kullanma.
  • CS0436: 'assembly' içindeki 'type' türü, 'assembly' içindeki içeri aktarılan 'type2' türüyle çakışıyor. Kullanılan tür, 'assembly' içinde tanımlı tür olacaktır.
  • CS0437: 'assembly2' içindeki 'type' türü, 'assembly1' içindeki içeri aktarılan 'namespace' ad alanıyla çakışıyor. 'assembly' içindeki tanımlı tür kullanılıyor.
  • CS0438: 'module_1' içindeki 'type' türü, 'module_2' içindeki 'ad alanı' ile çakışır.

Bu tanılamaları yöneten kuralları görmek için using yönergesi, extern takma ad ve ad alanı takma ad niteleyicisi dil referansına bakın. Olası düzeltmeler şunlardır:

  • Kodunuz, birden çok içeri aktarılan ad alanında bulunan bir ada başvurduğunda, tam nitelikli ad veya ad alanı diğer adı kullanın.
  • Derleyici, yönergeleri (using) tarafından içeri aktarılan iki veya daha fazla ad alanında aynı ad göründüğünde kullanmak istediğiniz türü belirleyemez.
  • İthal edilen bir tür ve iç içe geçmiş bir ad alanı aynı tam adı paylaştığında, ya türü ya da ad alanını yeniden adlandırın. Derleyici, isim referans verildiğinde bunlar arasında ayrım yapamaz (CS0434, CS0438).

Adlandırma çakışma uyarılarını gidermek için çakışan bildirimlerden birini yeniden adlandırın, farklı bir ad alanı kullanın, önemsiz derleme başvurularını kaldırın veya iki tanım arasında belirsizliği gidermek için bir extern takma adı kullanın. Derleyici, yerel olarak tanımlanan ad alanını içeri aktarılan türe (CS0435) göre, yerel olarak tanımlanan türü içeri aktarılan türe (CS0436) göre veya yerel olarak tanımlanan türü içeri aktarılan ad alanına (CS0437) göre kullanarak bu çakışmaları otomatik olarak çözer, ancak uyarılar ele alınması gereken olası bir karışıklık kaynağını gösterir.

Önceden tanımlanmış tür içeri aktarmaları

Aşağıdaki hata, önceden tanımlanmış tür tanımlarının eksik olmasıyla ilgilidir:

  • CS0518: Önceden tanımlanmış 'tür' türü tanımlanmamış veya içeri aktarılmamış.

Uyarı

Bu uyarı yalnızca açık Derleme veya Yeniden Derleme işlemleri sırasında bildirilir. IntelliSense tanılamasının bir parçası olarak IDE'de yazma sırasında görünmez. Bu, alanı kullanarak veya kaldırarak uyarıyı düzeltirseniz, projeyi derleyene veya yeniden derleyene kadar uyarının hata listesinde kalabileceği anlamına gelir.

Bu tanılamayı yöneten kurallar için bkz. NoStandardLib derleyici seçeneği dil başvurusu.

Projenizin doğru .NET çalışma zamanını hedeflediğini doğrulayın. gibi System.Int32 önceden tanımlanmış türler çalışma System.String zamanı kitaplığından gelir. Yanlış veya eksik <TargetFramework> belirtim, derleyicinin bu türleri bulmasını engeller (CS0518). Dosyanızdaki <TargetFramework> özelliğin .csproj hedeflenen çalışma zamanını (örneğin, net10.0) belirttiğinden emin olun. Kendi ad alanınızı tanımlamayı düşünmüyorsanız System derleyici seçeneğini belirtmeyin. Bu seçenek, önceden tanımlanmış tüm türleri (CS0518) tanımlayan standart kitaplığın içeri aktarılmasını engeller. Hata devam ederse Visual Studio'da projeyi yeniden yüklemeyi, ve obj klasörlerini silmeyi bin ve projeyi yeniden oluşturmayı veya .NET çalışma zamanını (CS0518) yeniden yüklemeyi deneyin.