Seçici özel eskimiş uyarıları bastırmak


212

ObsoleteBelirli bir yöntem kullanılırsa bir uyarı göstermek için özniteliği (sadece diğer programcılar tarafından önerildiği gibi) kullanıyorum.

SuppressMessageKullanımın haklı olduğu noktalarda CodeAnalysis'e benzer uyarıyı bastırmanın bir yolu var mı ?

Bunun için [Obsolete("Some message")]618 uyarısı üreten ve [Obsolete]612 uyarısı üreten bir mesaj içermeyen düz öznitelik için çalışması gerekir .

Yanıtlar:


257

Kullanım #pragma warning disable:

using System;

class Test
{
    [Obsolete("Message")]
    static void Foo(string x)
    {
    }

    static void Main(string[] args)
    {
#pragma warning disable 0618
        // This one is okay
        Foo("Good");
#pragma warning restore 0618

        // This call is bad
        Foo("Bad");
    }
}

Daha sonra "kötü" çağrıları kaçırmamak için uyarıyı geri yükleyin.


1
Bu, yalnızca Eskimiş özelliğimle bir mesaj vermezsem çalışır. Böyle bir mesaj var: [Eskimiş ("Bu yüzden bu kullanılmamalıdır - bunun yerine XYZ kullanın.")]. Mesajı girdikten sonra, pragma uyarısı devre dışı bırakma 612 çalışmayı durdurur ve ne olursa olsun uyarılar alıyorum. Bunun yerine başka bir hata kimliğine ihtiyacım var mı?
Alex

2
Buldum - Eskimiş özelliğinde bir mesaj varsa doğru uyarı numarası 618'dir. Teşekkür ederim!
Alex

2
Goodo - Örneğimi buna uyacak şekilde ayarladım.
Jon Skeet

6
@George: Onları burada bulabilirsiniz .
Jordão

3
Uyarı / hata numarasını en başta nasıl alacağımla ilgili cevabımı görün .
Aaron Thoma

131

Niyet eskimiş için uyarı devre dışı bırakmaktır kullanım bakılmaksızın yapı ile işaretlenmiş bağımsız olarak, [Obsolete]ya da [Obsolete("Message")]. Yani hem kullanmak CS0612 ve CS0618 :

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 

3
Ayrıca, kullanılmayan kullanımın kendisi eski olarak işaretlenmiş bir sınıfta olması durumunda uyarıların oluşmadığını unutmayın.
redcalx

3
Hata olarak Obsoleteişaretlenmesi durumunda bir hatayı devre dışı bırakmanın bir yolu var mı ?
Shimmy Weitzhandler

2
@Shimmy: bir hata olarak işaretlenmişse, düzeltmeniz gerekir, hataları bastırmanın bir yolu yoktur. Bir sözdizimi sorunu olabilir, bu sitede bir soru olarak gönderin ve kesinlikle iyi bir cevap alacaksınız.
Jordão

18

İşte uyarı / hata numarası almak için nasıl ilk etapta:

  1. Projenizi yeniden oluşturun .
  2. Git Çıktı penceresinin.
  3. Bastırmak istediğiniz uyarı / hatanın satırına bakın.
    Örneğin:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. " " İşaretinden sonra numara kısmını kopyalayın CS.
  5. Sonra Jon Skeet'in dediği gibi devam edin .

(Daha İyi hep gibi devam Jon Skeet diyor ...)


9

#pragmaUyarı devre dışı bırakma yönergesini arıyorsunuz

Temel olarak .cs dosyasındaki çağrı sitesinin üstüne aşağıdaki komutu eklersiniz.

#pragma warning disable 612
SomeMethodCall

612, eski yöntemleri çağırmak için kullanılan hata mesajı kimliğidir


Bu, yalnızca Eskimiş özelliğimle bir mesaj vermezsem çalışır. Böyle bir mesaj var: [Eskimiş ("Bu yüzden bu kullanılmamalıdır - bunun yerine XYZ kullanın.")]. Mesajı girdikten sonra, pragma uyarısı devre dışı bırakma 612 çalışmayı durdurur ve ne olursa olsun uyarılar alıyorum. Bunun yerine başka bir hata kimliğine ihtiyacım var mı?
Alex

2
Buldum - Eskimiş özelliğinde bir mesaj varsa doğru uyarı numarası 618'dir.
Alex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.