Kaynak oluşturucular ve aracılarla ilişkili hatalar ve uyarılar

Derleme sırasında derleyici kaynak oluşturucuları veya kesme yollarını yüklediğinde aşağıdaki hatalar oluşur:

  • CS9137: Bu ad alanı içinde 'önleyiciler' özelliği etkin değil. Projenize <Features>InterceptorsPreview</Features> ekleyin.
  • CS9138: 'method' yöntemi, bulunduğu tür tür parametrelerine sahip olduğundan önleyici olarak kullanılamaz.
  • CS9139: Araya girilemiyor: derleme belirtilen yolu içeren bir dosya içermiyor.
  • CS9140: Araya girilemiyor: derleme 'path' yoluna sahip bir dosya içermiyor. 'candidatePath' yolunu kullanmak mı istiyorsunuz?
  • CS9141: Sağlanan satır ve karakter numarası, yakalanabilir bir yöntem adına değil, 'token' belirtecine işaret eder.
  • CS9142: Verilen dosyada sağlanan satır numarasından ndaha az satır varm.
  • CS9143: Verilen satır c karakter uzunluğundadır, bu da sağlanan karakter sayısı n'ten daha azdır.
  • CS9144: İmzalar eşleşmediğinden, M yöntemi, V kesici ile kesilemez.
  • CS9145: Engellenemiyor: Yol eşlenmemiş. Eşlenmiş bir yol bekleniyor.
  • CS9146: Kesme noktası yöntemi sıradan bir üye yöntemi olmalıdır.
  • CS9147: Sağlanan satır ve karakter numarası, 'token' belirtecinin başlangıcına karşılık gelmiyor. 'n' satırını ve 'c' karakterini kullanmak mı istediniz?
  • CS9148: Kesme noktası bir this parametre eşleştirme parametresine sahip olmalıdır.
  • CS9149: Yöntemin this parametresi olmadığından, kesme noktasının parametresi this olmamalıdır.
  • CS9150: Interceptor bir null dosya yoluna sahip olamaz.
  • CS9151: Muhtemel yöntem adı M çağrılmadığı için kesilemiyor.
  • CS9152: Derlemede bu yola sahip birden fazla dosya bulunduğundan, 'path' yoluna sahip dosyadaki bir çağrı yakalanamıyor.
  • CS9153: Belirtilen çağrıya birden çok kez müdahale edilir.
  • CS9155: M ile çağrıya müdahale edilemiyor çünkü V içinde erişilebilir değil.
  • CS9156: 'kapsamlı' değiştiriciler veya M öznitelikler arasındaki fark nedeniyle V çağrısı [UnscopedRef] ile karşılanamıyor.
  • CS9157: Belirtilen InterceptsLocationAttribute satır ve karakter numaralarının pozitif olması gerekir.
  • CS9160: Bir nameof işleci engellenemez.
  • CS9161: Bir önleyici UnmanagedCallersOnlyAttributeile işaretlenemez.
  • CS9177: 'method' yöntemi, 'target' ile eşleşmek için generic olmamalı veya 'arity' değerine sahip olmalıdır.
  • CS9178: 'method' yönteminin 'target' ile eşleşmesi için genel olmayan olması gerekir.
  • CS9206: Bir kesme noktası genel ad alanında bildirilemez.
  • CS9207: 'yöntem', normal bir üye yöntemi çağrısı olmadığı için yakalanamaz.
  • CS9231: InterceptsLocationAttribute veri bağımsız değişkeni doğru formatta değil.
  • CS9232: 'interceptörler biçimi' sürümü desteklenmiyor. Desteklenen en son sürüm '1' dir.
  • CS9233: Derlemenin başka bir yerinde çoğaltıldığı için 'file' dosyasındaki çağrı engellenemiyor.
  • CS9234: Derlemede eşleşen bir dosya bulunamadığından, 'file' dosyasında bir çağrının engellenememesi.
  • CS9235: InterceptsLocationAttribute'un veri bağımsız değişkeni 'file' dosyasında geçersiz bir konuma başvuruyor.

Derleyici, derleme sırasında kaynak oluşturucuları veya kesme yollarını yüklediğinde aşağıdaki uyarılar oluşur:

  • CS8032: Çözümleyici 'çözümleyicisi' örneği 'assembly' : 'reason' dosyasından oluşturulamaz.
  • CS8033: 'assembly' derlemesi herhangi bir çözümleyici içermiyor.
  • CS8034: Çözümleyici derlemesi 'assembly' yüklenemedi: 'reason'
  • CS8040: ReflectionTypeLoadException nedeniyle 'assembly' çözümleyici derlemesindeki bazı türler atlanıyor: 'exception'.
  • CS8700: Birden çok çözümleyici yapılandırma dosyası aynı dizinde ('directory') olamaz.
  • CS8784: Üreteç 'generator' başlatılamadı. Çıktıya katkıda bulunmayacaktır ve bunun sonucunda derleme hataları oluşabilir. Özel durumun türü 'exception' ve iletisi 'message' idi.
  • CS8785: Üreteç 'generator' kaynak oluşturamadı. Çıktıya katkıda bulunmayacaktır ve bunun sonucunda derleme hataları oluşabilir. Özel durumun türü 'exception', iletisi ise 'message' idi.
  • CS8850: 'type' türünü içeren 'assembly' derlemesi, desteklenmeyen .NET Framework'e başvuruyor.
  • CS9057: 'assembly' çözümleyici derlemesi, şu anda çalışmakta olan 'currentVersion' sürümünden daha yeni olan derleyicinin 'version' sürümüne başvurduğundan kullanılamaz.
  • CS9067: Çözümleyici başvurusu 'reference' birden fazla kez belirtildi
  • CS9154: Bir çağrıyı M üzerinden V ile durdurmak, ancak imzalar eşleşmiyor.
  • CS9158: Dönüş türündeki başvuru türlerinin null atanabilirliği yakalanabilir yöntemle eşleşmiyor.
  • CS9159: Parametre türündeki başvuru türlerinin null atanabilirliği geçiştirilebilir yöntemle eşleşmiyor.
  • CS9270: 'InterceptsLocationAttribute(string, int, int)' desteklenmez. Bunun yerine bu özniteliklerin 'InterceptableLocation' tabanlı nesline geçin. (https://github.com/dotnet/roslyn/issues/72133)

Bu hatalar ve uyarılar şu temalara uyar:

Kaynak oluşturucu hataları

  • CS8784: Oluşturucu 'generator' başlatılamadı. Çıktıya katkıda bulunmayacaktır ve bunun sonucunda derleme hataları oluşabilir. Özel durumun türü 'exception', iletisi ise 'message' idi.
  • CS8785: Üreteç 'generator' kaynak kod üretemedi. Çıktıya katkıda bulunmayacaktır ve bunun sonucunda derleme hataları oluşabilir. Özel durumun türü 'exception', iletisi ise 'message' idi.

Bu uyarılar, bir kaynak oluşturucunun derleme sırasında işlenmeyen bir özel durum attığını gösterir. Kaynak oluşturucular derleme işlem hattının bir parçası olarak çalışır ve bir hata, oluşturucunun derlemeye çıkışına katkıda bulunmasını engeller. Kaynak oluşturucuları uygulama hakkında daha fazla bilgi için bkz. Kaynak Oluşturucular.

Bu uyarıları düzeltmek için şu yönergeleri izleyin:

  • Kök nedeni belirlemek için derleme çıktısındaki özel durumun tüm ayrıntılarını inceleyin (CS8784, CS8785). Uyarı iletisi, size veya oluşturucu yazarının hatayı tanılamanıza yardımcı olabilecek özel durum türünü, iletiyi ve yığın izlemesini içerir.
  • Kaynak oluşturucu için gerekli tüm bağımlılıkların projede kullanılabilir olduğundan emin olun (CS8784). Başlatma hataları genellikle oluşturucu başlatma sırasında gerekli bir derlemeyi veya kaynağı bulamadığında oluşur. Oluşturucunun NuGet paketinin doğru yüklendiğini ve tüm geçişli bağımlılıkların çözümlendiğini doğrulayın.
  • Özel durum üçüncü taraf oluşturucu kodundan (CS8784, CS8785) kaynaklanıyorsa kaynak oluşturucunun bakımcısına hatayı bildirin. Hata raporunuzdaki derleme çıkışındaki tüm özel durum ayrıntılarını ekleyin.
  • Kaynak oluşturucuyu yazdıysanız hataları düzgün bir şekilde yakalamak ve raporlamak için veya Initialize yöntemlerinize Execute özel durum işleme ekleyin (CS8784, CS8785).

Çözümleyici ve kaynak oluşturucu uyumluluğu

  • CS8032: Çözümleyici 'çözümleyicisi' örneği 'assembly' : 'reason' dosyasından oluşturulamaz.
  • CS8033: 'assembly' derlemesi herhangi bir çözümleyici içermiyor.
  • CS8034: Çözümleyici derlemesi 'assembly' yüklenemedi: 'reason'
  • CS8040: Bir ReflectionTypeLoadException nedeniyle çözümleyici derlemesi 'assembly' içindeki bazı türler atlanıyor: 'exception'.
  • CS8700: Birden çok çözümleyici yapılandırma dosyası aynı dizinde ('directory') olamaz.
  • CS8850: 'type' türünü içeren 'assembly' derlemesi, desteklenmeyen .NET Framework'e başvuruyor.
  • CS9057: 'assembly' çözümleyici derlemesi, şu anda çalışan 'currentVersion' sürümünden daha yeni olan derleyicinin 'version' sürümüne başvurduğu için kullanılamaz.
  • CS9067: Çözümleyici başvurusu 'reference' birden çok kez belirtildi

Bu uyarılar ve hatalar, çözümleyici ve kaynak oluşturucu derlemelerini yükleme, örnekleme veya yapılandırma ile ilgili sorunları gösterir. Kaynak oluşturucular çözümleyici derlemeleri olarak yüklendiğinden, bu tanılamalar hem çözümleyiciler hem de kaynak oluşturucular için geçerlidir.

Bu sorunları düzeltmek için şu yönergeleri izleyin:

  • çözümleyicinin gereksinimlerine uyacak şekilde .NET SDK'nızı veya derleyici sürümünüzü yükseltin veya çözümleyici paketinin geçerli derleyicinizle uyumlu eski bir sürümünü kullanın (CS9057). Çözümleyici derlemesi çalışan derleyicinin sağladığından daha yeni bir Roslyn API sürümünü hedeflediğinde bu hata oluşur.
  • Projenizden yinelenen çözümleyici başvurularını kaldırın (CS9067). Proje dosyanızda, farklı yollar üzerinden aynı çözümleyici derlemesini içeren yinelenen <Analyzer> veya <PackageReference> öğeleri olup olmadığını denetleyin. Geçişli paket bağımlılıkları da yinelenen bağımlılıklara neden olabilir.
  • Çözümleyici derlemesinin geçerli bir .NET derlemesi olduğunu ve bozulmadığını doğrulayın (CS8034). Derleme hiç yüklenmiyorsa, dosyanın başvuruda bulunılan yolda bulunduğundan ve uyumlu bir hedef çerçeve için oluşturulduğundan emin olun. Yeni bir kopya almak için NuGet paketini yeniden oluşturun veya yeniden yükleyin.
  • Çözümleyici türünün genel bir parametresiz oluşturucuya (CS8032) sahip olduğundan emin olun. Derleyici, varsayılan oluşturucularını çağırarak çözümleyicilerin örneğini oluşturur. Oluşturucu bir özel durum oluşturursa veya parametreler gerektiriyorsa çözümleyici oluşturulamaz.
  • Başvuruda bulunılan derlemenin çözümleyici veya kaynak oluşturucu türlerini (CS8033) dışarı aktardığını doğrulayın. Çözümleyici olarak başvurulan bir derleme, DiagnosticAnalyzer veya ISourceGenerator/IIncrementalGenerator uygulayan türler içermelidir. Bileşen bir çözümleyici değil de çalışma zamanı bağımlılığıysa, bunun yerine normal bir proje ya da paket başvurusu olarak ekleyin.
  • Tüm bağımlılıklarının mevcut olduğundan emin olarak çözümleyici derlemesindeki tür yükleme sorunlarını çözün (CS8040). Bir ReflectionTypeLoadException, genellikle derlemenin bulunamayan diğer derlemelerdeki türlere başvurduğu anlamına gelir. Tüm gerekli bağımlılıkların çözümleyicinin NuGet paketine eklendiğinden emin olun.
  • Çözümleyici yapılandırma dosyalarının (.editorconfig veya .globalconfig) dizin başına benzersiz olduğundan emin olun (CS8700). Öncelik kuralları belirsiz olacağından, derleyici aynı dizinde birden çok çözümleyici yapılandırma dosyalarına izin vermez. Dosyaları birleştirin veya yinelenenleri kaldırın.
  • Çözümleyiciyi veya kaynak oluşturucuyu, .NET Framework (CS8850) yerine .NET Standard ya da modern .NET’i hedefleyecek şekilde güncelleştirin. .NET Framework'e başvuran derlemeler, modern .NET derleyici araç zincirinde desteklenmez. Çözümleyicinin bakımını yapıyorsanız, onu netstandard2.0 olarak yeniden hedefleyin. Bu bir üçüncü taraf paketiyse, modern .NET destekleyen bir sürüme yükseltin.

Kesiciler deneyseldir

  • CS9137: Bu ad alanında 'interceptors' özelliği etkinleştirilmemiş. <Features>InterceptorsPreview</Features> öğesini projenize ekleyin.

Interceptor’ları kullanmak için, proje dosyanızda <PropertyGroup> bölümü içine <Features>InterceptorsPreview</Features> öğesini ekleyin (CS9137). Kesiciler deneysel bir özelliktir ve varsayılan olarak etkinleştirilmez. Yakalama araçları özelliği, gelecekteki sürümlerde geriye dönük uyumluluğu bozan değişikliklere uğrayabileceğinden veya kaldırılabileceğinden, bu açık onay gereklidir. Derleyicinin kullanımına izin vermeden önce riskleri anladığınızı onaylaması gerekir. Yakalaçlar ve bunların işlevleri hakkında daha fazla bilgi için C# 12 özellikleri dokümanındaki Yakalaçlar bölümüne bakın.

İmza uyuşmazlığı

Aşağıdaki hatalar ve uyarılar, yakalayıcı yöntem ile yakalanabilir yöntem arasında bir uyuşmazlık olduğunu gösterir.

  • CS9144: İmzalar uyuşmadığından M yöntemi V kesici ile yakalanamıyor.
  • CS9148: Kesme noktası bir this parametre eşleştirme parametresine sahip olmalıdır.
  • CS9149: Yöntemin this parametresi olmadığından, kesme noktasının parametresi this olmamalıdır.
  • CS9155: M ile çağrının araya alınması mümkün değil çünkü V içinde erişilebilir değil.
  • CS9156: Kapsam belirleyicileri veya M öznitelikler arasındaki fark nedeniyle V çağrısı [UnscopedRef] ile kesilemiyor.
  • CS9177: 'method' yöntemi, 'target' ile eşleşmek için jenerik olmamalı veya 'arity' sayıda tür parametresine sahip olmalıdır.
  • CS9178: 'method' yönteminin 'target' ile eşleşmesi için genel olmayan olması gerekir.

Ayrıca, aşağıdaki uyarılar kesme aracının ve kesişebilir yöntemin imzalarında bir uyuşmazlık olduğunu gösterir:

  • CS9154: Bir çağrının M ile kesici V ile kesilmesi, ancak imzalar eşleşmiyor.
  • CS9158: Dönüş türündeki başvuru türlerinin null atanabilirliği kesişebilir yöntemle eşleşmiyor.
  • CS9159: Parametre türündeki başvuru türlerinin null atanabilirliği, yakalanabilir yöntemle eşleşmiyor.
  • CS9270: 'InterceptsLocationAttribute(string, int, int)' desteklenmez. Bunun yerine bu özniteliklerin 'InterceptableLocation' tabanlı nesline geçin. (https://github.com/dotnet/roslyn/issues/72133)

Bu sorunları düzeltmek için, yakalayıcı metodunuzun yakalanabilir metodun imza ve erişim gereksinimleriyle uyumlu olduğundan emin olun.

  • Kesme noktası yöntemi imzasının kesilebilir yöntemle (CS9144, CS9154) tam olarak eşleştiğinden emin olun. Parametre türleri, değiştiriciler, sıra ve dönüş türü aynı olmalıdır. Her iki yöntem bildirimini de gözden geçirin ve imzalarını hizalayın.
  • Kesişebilir yöntem bir this örnek yöntemi (CS9148) olduğunda kesme kutunuza bir parametre ekleyin veya kesilebilir yöntem statik olduğunda (this) parametresini kaldırın. Örnek kesişimcileri bildirim türü parametresi gerektirirken this statik kesişimcilerin bir parametresi olmamalıdır.
  • Kesişebilir yöntemin erişilebilir olduğu bir konumda kesicinizi bildirin (CS9155). Kesişebilir yöntem internal ise, yakalayıcı aynı derlemede olmalıdır. Eğer private ise, kesici aynı türde veya iç içe bir türde olmalıdır.
  • İlgili scoped parametrelerdeki [UnscopedRef] değiştiricileri ve ref öznitelikleri eşleştirin (CS9156). Bellek güvenliğini sağlamak için kesme aracındaki her ref parametrenin, kesişebilir yöntemdeki karşılık gelen parametreyle aynı yaşam süresi ek açıklamalarına sahip olması gerekir.
  • Her iki yöntemin de eşleşen genel ariteye (CS9177, CS9178) sahip olduğundan emin olun. Önlenebilir yöntem genel değilse, önleyici de genel olmamalıdır. Kesişebilir yöntemin tür parametreleri varsa, kesme noktasının uyumlu kısıtlamalarla aynı sayıda tür parametresine sahip olması gerekir.
  • Dönüş türü (CS9158) ve parametre türlerindeki (CS9159) null atanabilirlik ek açıklamalarını uyumlu hale getirin. Projenizde null atanabilir başvuru türlerini etkinleştirin ve kesicinin null atanabilir ek açıklamalarının tür güvenliğini korumak için kesilebilir yöntemle tam olarak eşleştiğinden emin olun.
  • Güncellenmiş InterceptableLocation tabanlı nesli, kullanım dışı bırakılmış InterceptsLocationAttribute oluşturucusu ((string, int, int)) yerine kullanın. Daha yeni biçim, daha iyi araç desteği ve derleme zamanı doğrulaması sağlar. Geçiş kılavuzu için GitHub sorununa bakın.

Yanlış eşleme

Önleyiciler, yakalanabilir yöntem ve önleyici yöntemi eşleyen bir kaynak eşlemesi gerektirir. Aşağıdaki hatalar eşlemeyle ilgili bir sorunu gösterir:

  • CS9139: Önlenemiyor: derleme, yola sahip bir dosya içermiyor.
  • CS9140: Araya girilemiyor: derleme 'path' yoluna sahip bir dosya içermiyor. 'candidatePath' yolunu kullanmak mı istiyorsunuz?
  • CS9141: Sağlanan satır ve karakter numarası, yakalanabilir bir metot adına değil, 'token' belirtecine işaret eder.
  • CS9142: Verilen dosyada sağlanan satır numarasından ndaha az satır varm.
  • CS9143: Verilen satır c karakter uzunluğunda olup, sağlanan karakter sayısı olan n 'den daha azdır.
  • CS9145: Durdurulamıyor: Yol haritalanmamış. Haritalanmış yol bekleniyor.
  • CS9147: Belirtilen satır ve karakter numarası, 'token' belirtecinin başlangıcını işaret etmiyor. 'n' satırını ve 'c' karakterini kullanmayı mı kastettiniz?
  • CS9150: Kesme noktası bir null dosya yoluna sahip olamaz.
  • CS9157: Belirtilen InterceptsLocationAttribute satır ve karakter numaralarının pozitif olması gerekir.

Eşleme hatalarını düzeltmek için geçerli dosya yolları ve doğru konum bilgileri içerdiğinizden InterceptsLocationAttribute emin olun:

  • Dosya yolunun derlemenizdeki bir dosyayla tam olarak eşleştisini doğrulayın (CS9139, CS9140). Doğru büyük/küçük harf ve dizin ayırıcıları da dahil olmak üzere projenizde göründüğü şekilde tam yolu kullanın. Derleyici alternatif bir yol önerirse, özniteliğinizi bu yolu kullanacak şekilde güncelleştirin.
  • Dosya yollarını (CS9145) dönüştüren kaynak oluşturucularla çalışırken eşlenmiş dosya yollarını kullanın. Kaynak oluşturucular genellikle oluşturulan dosyalar için yolları yeniden eşler ve özgün kaynak yolu değil derleyicinin tanıdığı eşlenmiş yolu kullanmanız gerekir.
  • Dosya yolunun (null) içinde InterceptsLocationAttribute olmadığından emin olun. Her dinleme, dinleme çağrısını içeren kaynak dosyayı tanımlayan geçerli ve boş olmayan bir dosya yolu belirtmelidir.
  • Pozitif, 1 tabanlı çizgi ve karakter numaraları (CS9157) sağlayın. Satır numaraları ve karakter konumları 0'da değil 1'de başlamalıdır. Konumları hesaplarken kaynak oluşturucunuzun 1 tabanlı dizinleme kullandığını doğrulayın.
  • Yöntem adı belirtecinin tam başlangıcının üzerine gelin (CS9141, CS9147). Satır ve karakter numaraları, boşluk, işleçler veya diğer belirteçler yerine çağrıda yöntem adının ilk karakterini tanımlamalıdır. Derleyici alternatif koordinatlar önerirse, doğru belirteç başlangıcını hedeflemek için bunları kullanın.
  • Dosyanın sınırları içinde kalın (CS9142, CS9143). Satır numarasının toplam satır sayısını aşmadığını ve karakter numarasının satır uzunluğunu aşmadığını doğrulayın. Öznitelik oluşturulduktan sonra kaynak dosya değiştiyse konumları yeniden hesapla.

Yanlış interceptor deklarasyonu

Aşağıdaki hatalar, kesme noktası kurallarının biçimi veya ihlalleriyle ilgili sorunlar da dahil olmak üzere kesme noktası bildirimleriyle InterceptsLocationAttribute ilgili sorunları gösterir:

  • CS9138: 'method' yöntemi, onu içeren türün tür parametreleri olduğundan önleyici olarak kullanılamaz.
  • CS9146: Bir kesici yöntemi sıradan bir üye yöntemi olmalıdır.
  • CS9151: Olası yöntem adı M çağrılmadığından kesilemiyor.
  • CS9152: Derlemede bu yola sahip birden fazla dosya bulunduğundan, yolu 'path' olan dosyadaki bir çağrıya müdahale edilemiyor.
  • CS9153: Belirtilen çağrıya birden çok kez müdahale edilir.
  • CS9160: Bir nameof işleci engellenemez.
  • CS9161: Bir önleyici UnmanagedCallersOnlyAttribute ile işaretlenemez.
  • CS9206: Bir kesme noktası genel ad alanında bildirilemez.
  • CS9207: 'yöntem', sıradan bir üye yönteminin çağrısı olmadığından yakalanamaz.
  • CS9231: InterceptsLocationAttribute veri bağımsız değişkeni doğru biçimde formatlanmamış.
  • CS9232: 'Yakalayıcılar' formatının 'sürüm' sürümü desteklenmiyor. Desteklenen en son sürüm: '1'.
  • CS9233: Derlemenin başka bir yerinde çoğaltıldığı için 'file' dosyasındaki bir çağrı engellenemiyor.
  • CS9234: Derlemede eşleşen bir dosya bulunamadığından, 'file' dosyasındaki bir çağrıya müdahale edilemiyor.
  • CS9235: InterceptsLocationAttribute'un veri bağımsız değişkeni 'file' dosyasında geçersiz bir konuma başvuruyor.

Kesme noktası bildirim hatalarını düzeltmek için geçerli kesme noktası bildirimleri ve InterceptsLocationAttribute kullanımı için şu kuralları izleyin:

  • Veri bağımsız değişkenini doğru biçimlendirin InterceptsLocationAttribute (CS9231). özniteliği, dosya yolunu ve konum bilgilerini kodlayan özel olarak yapılandırılmış veriler gerektirir. Kaynak oluşturucunuzun geçerli kesme noktası belirtimi ile eşleşen verileri beklenen biçimde ürettiğinden emin olun.
  • Desteklenen en son sürüm olduğundan (InterceptsLocationAttribute) '1' sürümünü kullanın. Kaynak oluşturucunuzu desteklenmeyen sürüm numaraları yerine sürüm 1 biçimindeki öznitelikleri çıkaracak şekilde güncelleştirin.
  • Derlemenizde benzersiz dosya yollarından emin olun (CS9233, CS9234). Derleme yinelenen dosya yolları içerdiğinde, dosyaları yeniden adlandırın veya yeniden düzenleyerek her yolu benzersiz hale getirin. Özniteliğindeki dosya yolunun derlemeye dahil edilen bir dosyayla eşleştiğinden emin olun.
  • Konum veri noktalarını geçerli kod konumlarına doğrulayın (CS9235). Satır ve karakter numaraları, belirtilen dosya içinde geçerli bir kesim noktasına atıfta bulunmalıdır. Kaynak dosya değiştiyse veya konum dosyanın sınırlarının dışındaysa özniteliğini yeniden üretin.
  • Genel olmayan türlerde (CS9138) genel olmayan kesme noktası yöntemlerini bildirin. Yakalayıcılar, tür parametresi olan türlerde bildirilemez. Genel bir yöntemi kesmeniz gerekiyorsa, belirli bir yapı türüyle çalışan genel olmayan bir içerik türünde genel olmayan bir kesme noktası oluşturun.
  • Kesicileri standart üye metodları (CS9146) yapın. Kesiciler operatörler, oluşturucular, sonlandırıcılar, özellikler veya indeksleyiciler olamaz. Kesiciyi normal bir statik veya örnek metodu olarak bildirin.
  • İfadeler değil, gerçek yöntem çağrılarını yakala (CS9151, CS9207). Yalnızca çağrılan normal üye yöntemlerine yapılan çağrıları engelleyebilirsiniz. Çağrılmadan başvurulan yöntem gruplarını, temsilcileri veya yöntemleri engelleyemezsiniz. Yakalanabilir konumun gerçek bir metot çağrısı tanımladığından emin olun.
  • Yinelenen kesme girişimlerini kaldırın (CS9153). Her yöntem çağrısı yalnızca bir kez kesilebilir. Aynı çağrıyı birden çok InterceptsLocationAttribute örnek hedeflediyse, belirsizliği çözmek için bir örnek dışında tümünü kaldırın.
  • Operatörleri kesmeyin nameof (CS9160). nameof işleci çalışma zamanında yöntemleri çağırmaz, bu nedenle araya giremez. Yalnızca çalışma zamanında yürütülen gerçek yöntem çağrılarına müdahale edin.
  • UnmanagedCallersOnlyAttribute kesicileri (CS9161) kaldırın. Yakalayıcılar yönetilen koddan çağrılabilir olmalıdır ve UnmanagedCallersOnlyAttribute olarak işaretlenemez. Yakalayıcı yöntemi bildiriminizden özniteliği kaldırın.
  • Bir ad alanı içinde interceptörleri bildirin (CS9206). Önleyiciler global ad alanında bildirilemez ve en az bir ad alanı bildirimi içinde yer almalıdır. Kesici sınıfınızı bir ad alanına sarın.
  • Yinelenen dosya yollarını derleme düzeyinde (CS9152) çözün. Derlemede birden çok dosya aynı yolu paylaştığında, derleyici hangi dosyanın araya gireceğini belirleyemez. Derleme yapılandırmasının benzersiz dosya yolları ürettiğine veya kaynak dosyalarınız için farklı bir kuruluş stratejisi kullandığına emin olun.