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。
C#预编译指令的更多相关文章
- iOS中的预编译指令的初步探究
目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...
- C/C++中的预编译指令
工作中遇到的: 一个头文件中的: #pragma warning(disable:4996)#pragma warning(disable:4244)#pragma warning(disable:4 ...
- C:预编译指令
预编译 关于编译 参考 关于宏定义 参考 预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预 ...
- C#中的预编译指令介绍
原文:C#中的预编译指令介绍 1.#define和#undef 用法: #define DEBUG #undef DEBUG #define告诉编译器,我定义了一个DEBUG的一个符号,他类似一个变量 ...
- C++ 内置宏定义 与 预编译指令
内置宏和预编译指令, 在代码调试.单元测试.跨平台代码中经常会用到.这里记录一下. 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE ...
- c语言中条件编译相关的预编译指令
一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编 ...
- C#编写中使用预编译指令代替不停的注释
是不是经常调试某个模块的时候,要打开一堆Console或者Debug.Log,printf 不调试的时候,又关掉.如此繁复的倒腾实在是烦 可以使用预编译指令代替这种做法 #define 自定义字段 . ...
- c/c++中的预编译指令总结
预处理指令提供按条件跳过源文件中的节.报告错误和警告条件,以及描绘源代码的不同区域的能力.使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致.在 C# 中没有单独的预处理步骤:预处理指 ...
- C语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】
由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...
随机推荐
- Jquery调用Webservice传递Json数组
Jquery由于提供的$.ajax强大方法,使得其调用webservice实现异步变得简单起来,可以在页面上传递Json字符串到Webservice中,Webservice方法进行业务处理后,返回Js ...
- echarts 各种细节问题
1.最大值最小值异常 //如果数组中的数字是字符串的形式的话,echarts计算最大最小值不正确,故将String的数字转化成Number类型 //将包含字符串的数组转化为浮点数数组 function ...
- 《Google 代码风格指南》
<Google 代码风格指南> https://github.com/google/styleguide
- Java 中判断两个对象是否相等
由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transp ...
- php 安装pdo_mysql 扩展
如果pdo在linux下出现exception 'PDOException' with message 'could not find driver'则问题是php编译时少加--with-pdo-my ...
- LotusPhp入口文件解析
LotusPhp也是单入口的框架,可以根据需要开启多个应用实例 例如前台页面可以用index.php作为入口文件,后台可以用admin.php作为入口文件,多个应用实例可以共享应用配置和类库或者根本每 ...
- yii在TbGridView的td里面加入相应的下拉选项(转)
当你需要在一个GridView渲染某一个复杂元素的时候(特别是在这种情况下,这是一个小部件),这就需要你在控制器中调用一个动作.例如你给一个GridView的定义这样的一列: <?php $th ...
- delphi的多线程编程
多线程的基本概念 win 98/nt/2000/xp 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用cpu 运行时间和资源,或者说,把cpu 时间划成片,每个片分给不同的线程 ...
- 小课堂Week12 Clean Code Part1
小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...
- Java程序员要注意的10个问题————————好东西就是要拿来分享
[本文来自优优码:http://www.uucode.net/201406/ten-issue-for-java],好东西就是要拿来分享 1. Array 转为 ArrayList 很多人会这么写: ...