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语言的预编译,程序员必须懂的知识!【预编译指令】【预编译过程】
由“源代码”到“可执行文件”的过程包括四个步骤:预编译.编译.汇编.链接.所以,首先就应该清楚的首要问题就是:预编译只是对程序的文本起作用,换句话说就是,预编译阶段仅仅对源代码的单词进行变换,而不是对 ...
随机推荐
- Ubuntu 14.04下java开发环境的搭建--1--JDK的安装
说明:以下内容均是本人个人经验,接触ubuntu系统是从10.04开始,转眼转眼之间已经四年了,经常浏览各种相关论坛,发现从我刚开始基础到现在,论坛上还有很多人在问关于JAVA环境配置的相关问题.所以 ...
- PHP用Array模拟枚举
C#中枚举Enum的写法: /// <summary> /// 公开类型 2-好友可见 1-公开 0-不公开 /// </summary> public enum OpenSt ...
- 个性化修改Linux登录时的字符界面
如果采用root账号登录编辑/etc/bashrc内容,那所有其他帐号登录都会提示相同的内容,如果想每个用户进行配置,那就去每个帐号的目录下去配置吧. 这里提供改一个文件所有帐号都能看到的个性显示内容 ...
- PHP通过IP 获取 地理位置(实例)
发布:JB02 来源:脚本学堂 分享一例php代码,实现通过IP地址获取访问者的地理位置,在php编程中经常用到,有需要的朋友参考下吧.本节内容:PHP通过IP获取地理位置 例子: 复制代码代码 ...
- 【FitNess】测试框架试用
参考网友的博客http://blog.csdn.net/funi16/article/details/8985280 1.官网下载jar包fitnesse-standalone.jar后安装. 2.进 ...
- 会写网页 就会写手机APP -- Hybrid Mobile Apps for ASP.NET Developers
您好,这篇文章是我的BLOG发出,原始出处在此: 会写网页 就会写手机APP -- Hybrid Mobile Apps for ASP.NET Developers http://www.dotbl ...
- python分片
刚刚学习,很新 >>> numbers = [1,2,3,4,5,6,7,8,9,10] >>> numbers[0:10:2] [1,3,5,7,9] >& ...
- linux 修改系统时间
首先进入/proc/sys/xen,执行以下命令 [root@test]#cd /proc/sys/xen[root@test]#echo 1 > independent_wallclock ...
- [php]php数组函数的相关
1.8.26---list与extract的作用区别extractextract -- 从数组中将变量导入到当前的符号表 说明int extract ( array var_array [, int ...
- WPF实现渐变淡入淡出的动画效果
1.实现原理 1.1 利用UIElement.OpacityMask属性,用于改变对象区域的不透明度的画笔.可以使元素的特定区域透明或部分透明,从而实现比较新颖的效果. 1.2 OpacityMask ...