近日工作涉及到於外部系統交互,對方提供接口;但是在雙方系統未聯調時,引用外部DLL,相關類實例化,提示異常錯誤(錯誤消息正常);后面操作無法進行,那如何寫調試代碼,即在調試時不運行某段代碼,而在正式發布時,運行該部分程序。
分析:
為避免在調試過程中,避免異常錯誤,導致程序無法正常運行(主要是針對真實環境未提供),例如需要硬件驅動;需要一個標識,告訴程序執行某段代碼。
方案:
1、在config文件中加入配置項,根據不同的配置值來執行程序某段代碼
2、采用預編譯指令,當程序在debug時,執行那部分代碼;在RELEASE時,執行某部分代碼
比較:
第一種方案的需要用戶配置文件,添加維護工作量;第二種相對靈活,但是在交付版本時,注意區分是DEBUG還是RELEASE
關於預編譯指令的官方解釋在http://msdn.microsoft.com/zh-cn/library/ed8yd1ha.aspx
使用 #define 定義符號。 當您將符號用作傳遞給 #if 指令的表達式時,此表達式的計算結果為 true,如下例所示: # define DEBUG
項目中具體應用
#define RELEASE using System; #if DEBUG HiddenDebugContrl(false); #elif RELEASE m_service = new RFIDGateService(); m_service.CheckedItemEpcRaised += new RFIDGateService.ItemCheckedEvent(m_service_CheckedItemEpcRaised); m_service.SessionEndCheckedRaised += new RFIDGateService.SessionEndCheckedEvent(m_service_SessionEndCheckedRaised); HiddenDebugContrl(true); #else #endif
注:C#在Debug狀態下自動定義DEBUG標志,但Release狀態不會自動定義RELEASE標志,故需要在開頭定義#define RELEASE。