zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    批处理(*.bat)文件 -> 命令
    设置柱状图:每项颜色不一样
    回到顶部 插件 遇到的一点小问题
    body的滚动事件的坑
    文章标题
    window.open()打开的新窗口被拦截的原因分析和解决方案
    常用正则表达式
    代码整洁之道,clean code
    表单序列化,获取Json对象
    利用聚合函数来去重
  • 原文地址:https://www.cnblogs.com/tuqun/p/3889904.html
Copyright © 2011-2022 走看看