2011-04-01 88 views
6

我有一個可以在某些項目中引用的組件(例如,Component.dll)。我發佈它,當然,在發佈模式。確定發佈的DLL中的調試/發佈模式?沒有#DEBUG

在另一個項目中(例如Project.exe)我參考了Component.dll
如果我在調試模式下構建Project.exe,有沒有辦法在我的Component.dll庫中找到有關該問題的方法?

澄清更多:如果我有一個名爲Test的方法和Component.dll內的方法。我可以這樣做:

public void Test(){ 
    if(Debug.IsInDebugMode) 
     ... 
} 

請記住,Component.dll內置在發佈模式。

回答

5

您的代碼是否構建在Release或Debug模式下並不重要。生成的IL非常接近。 Debug版本將具有抖動用於設置編譯默認值的屬性,該屬性在您的設備中缺失。接下來的事情正是如何您調試或運行您的應用程序。重要的設置是Tools + Options,Debugging,General,「Suppress JIT optimization on module load」。它默認打勾。

現在,無論您的應用程序是否由調試器啓動,它都會影響它。這很容易找到,請使用System.Diagnostics.Debugger.IsAttached屬性。如果爲false,則由IL生成的機器代碼將通過抖動進行優化。代碼開始後,一個退化的情況是附加一個調試器。有點重要的是,這對你順便沒有任何區別。

+0

它看起來像Debugger.IsAttached是我所需要的。當我測試解決方案時,我將標記答案正確。 – icesar 2011-04-04 08:28:42