2010-08-13 20 views
5

Kodu DEBUG kodu olarak işaretlersek, RELEASE modunda 'u çalıştırmayacağımı biliyorum, ancak yine de derleme olarak derlenmiş olur mu? Montajımın ekstra yöntemlerle şişirilmediğinden emin olmak istiyorum.Koşullu DEBUG - Hala RELEASE kodunda derleme yapıyor mu?

[Conditional(DEBUG)] 
private void DoSomeLocalDebugging() 
{ 
    //debugging 
} 

cevap

10

Evet, yöntemi hala ancak derlemek inşa edilmiştir kendisi.

Bu tamamen mantıklı - Conditional noktası Aranan inşa edildiğinde bu etkiyi, arayan oluşturulduğunda tanımlanan önişlemci sembollere bağlı olduğu için.

using System; 
using System.Diagnostics; 

class Test 
{ 
    [Conditional("FOO")] 
    static void CallMe() 
    { 
     Console.WriteLine("Called"); 
    } 

    static void Main() 
    { 
     CallMe(); 
    } 
} 

(FON tanımlamadan) Kodu çalıştırın ve hiçbir çıkış olduğunu göreceksiniz, ancak yansıtıcı içinde bakmak eğer yöntem hala orada göreceksiniz: -

Basit bir test bu kurmak.

Başka bir deyişle: .NET yayınlanmış (derlediğimiz) derlemeleri DEBUG sembolü tanımlı olarak oluşturuldu mu? Değillerse (ve şüphesiz onlar olmadıklarından şüpheleniyorum!) Debug.Assert vs nasıl arayabilirdik?

Kuşkusuz bunu mantıklı olur özel yöntemleri bina yaparken de bunu dahil etmemeye - ama gördüğünüz gibi, yine inşa olduğunu - basitlik ve tutarlılık için makul olan.

+1

+1 Haklısınız. Bunu düşünmem ne aptaldı. – kemiller2002

İlgili konular