vs("HATA") #eğer hata AYIKLAMA Koşullu
Kullanmak için daha iyi olduğunu, ve neden, büyük bir proje:
#if DEBUG
public void SetPrivateValue(int value)
{ ... }
#endif
ya
[System.Diagnostics.Conditional("DEBUG")]
public void SetPrivateValue(int value)
{ ... }
CEVAP
Gerçekten ne yaptığını bağlıdır:
#if DEBUG
: buradaki kod bile bırakın IL ulaşamaz.- Bu kod IL ulaşacak, ancak bu yöntem çağrıları AYIKLAMA sürece çalıştırmaz.
[Conditional("DEBUG")]
:
Kişisel duruma bağlı olarak: ikisini de kullanıyorum
("") Hata AYIKLAMA Örnek: . koşullu ^/b>Geri dön ve benim kod yayın sırasında daha sonra düzenlemek zorunda değilim Bunu kullanıyorum, ama hata ayıklama sırasında herhangi bir yazım hatası yapmadım emin olmak istiyorum. Bu INotifyPropertyChanged eşyalarımı kullanmak için çalışırken bir özellik adını doğru yazın bunu kontrol edebilirsiniz.
[Conditional("DEBUG")]
[DebuggerStepThrough]
protected void VerifyPropertyName(String propertyName)
{
if (TypeDescriptor.GetProperties(this)[propertyName] == null)
Debug.Fail(String.Format("Invalid property name. Type: {0}, Name: {1}", GetType(), propertyName));
}
Gerçekten 12 ** ile aynı: bu işlev her arama sarmak için istekli değilseniz, bir işlevi #if DEBUG
kullanarak yaratmak istemedim
#if DEBUG
public void DoSomething() { }
#endif
public void Foo()
{
DoSomething(); //This will have a compilation error if you're not in DEBUG.
}
#if DEBUG
public void DoSomething() { }
#endif
public void Foo()
{
#if DEBUG
DoSomething(); //This works, but looks FUGLY
#endif
}
[Conditional("DEBUG")]
public void DoSomething() { }
public void Foo()
{
DoSomething(); //Code compiles and is cleaner, DoSomething always
//exists, however this is only called during DEBUG.
}
hata AYIKLAMA örnek ise#:XML iletişim için farklı bağlantıları Kur çalışırken bunu kullanıyorum.
#if DEBUG
public const String ENDPOINT = "Localhost";
#else
public const String ENDPOINT = "BasicHttpBinding";
#endif
İlk örnekte, bütün kodlar var, ama sadece hata AYIKLAMA olmadığı sürece göz ardı edilir. İkinci örnekte, sabit NOKTA "" veya "BasicHttpBinding" eğer hata AYIKLAMA set olup olmadığını bağlı olarak. Localhost için ayarlanır
Bu cevap bu soruya cevap verdi bu soruya cevap vermek çok önemli eklemek için güncelleme yapıyorum en yüksek olduğu. Çünkü güncelleme: Eğer aramaları derleme sırasında atlanan akılda ConditionalAttribute
, sürekli kullanmak isterseniz, veçalışma zamanı değil. Yani:
MyLibrary.dll
[Conditional("DEBUG")]
public void A()
{
Console.WriteLine("A");
B();
}
[Conditional("DEBUG")]
public void B()
{
Console.WriteLine("B");
}
Ne zaman kütüphane derlenmiş karşı yayın modu (örneğin, hata AYIKLAMA simge), sonsuza kadar aramak B()
içinden A()
ihmal, bile alıcı bir derleme derlenmiş karşı hata ayıklama.
Eğer nasıl MUAYENE imzalanmış veya &qu...
"sertifika süresi dolmuş hata Ayı...
VS hata ayıklama "hızlı izle"...
&Quot;ifadesindeki İç hata değerlendir...
Hata ayıklama iletisi "Kaynak diğ...