C#預編譯指令


近日工作涉及到於外部系統交互,對方提供接口;但是在雙方系統未聯調時,引用外部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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM