如何:使用跟踪和调试进行条件编译
当在开发过程中调试应用程序时,跟踪和调试输出都会出现在 Visual Studio 的“输出”窗口中。 不过,若要在已部署的应用程序中包含跟踪功能,则必须在启用 TRACE 编译器指令的情况下编译已插入检测点的应用程序。 这样就可以将跟踪代码编译成应用程序的发布版本。 如果未启用 TRACE 指令,将在编译过程中忽略所有跟踪代码,并且不会将其包含在将部署的可执行代码中。
跟踪方法和调试方法都具有关联的条件特性。 例如,如果跟踪的条件特性为 true,所有跟踪语句都将包含在一个程序集(经过编译的 .exe 文件或 .dll)中;如果 Trace 条件特性为 false,则不会包括跟踪语句。
您可以为一个版本打开或关闭 Trace 和/或 Debug 条件特性。 这样就会有四种版本:Debug、Trace、二者或二者都不是。 某些用于生产部署的发布版本可能不包含这两种属性;大多数调试版本会同时包含这两种属性。
您可以通过几种方式来指定应用程序的编译器设置:
属性页
命令行
#CONST(对于 Visual Basic)和 #define(对于 C#)
从属性页对话框中更改编译设置
右击**“解决方案资源管理器”**中的项目节点。
从快捷菜单中选择**“属性”**。
在 Visual Basic 中,单击“属性”页左窗格中的**“编译”选项卡,再单击“高级编译选项”按钮,以显示“高级编译器设置”**对话框。 选中希望启用的编译器设置对应的复选框。 清除要禁用的设置的复选框。
在 C# 中,单击“属性”页左窗格中的**“生成”**选项卡,然后选中希望启用的编译器设置对应的复选框。 清除要禁用的设置的复选框。
使用命令行编译已插入检测点的代码
在命令行上设置条件编译器开关。 编译器将在可执行文件中包括跟踪或调试代码。
例如,在命令行上输入的以下编译器指令将在经过编译的可执行文件中包含跟踪代码:
对于 Visual Basic:vbc /r:System.dll /d:TRACE=TRUE /d:DEBUG=FALSE MyApplication.vb
对于 C#:csc /r:System.dll /d:TRACE /d:DEBUG=FALSE MyApplication.cs
提示 若要编译多个应用程序文件,请在文件名之间留一个空格,例如 MyApplication1.vb MyApplication2.vb MyApplication3.vb 或 MyApplication1.cs MyApplication2.cs MyApplication3.cs。
以上示例所使用的条件编译指令具有如下含义:
指令
含义
vbc
Visual Basic 编译器
csc
C# 编译器
/r:
引用外部程序集(EXE 或 DLL)
/d:
定义条件编译符号
注意 必须用大写字母来拼写 TRACE 或 DEBUG。如需有关条件编译命令的更多信息,请在命令提示处输入 vbc /?(对于 Visual Basic)或 csc /?(对于 C#)。有关更多信息,请参见从命令行生成 (C#) 或调用命令行编译器 (Visual Basic)。
使用 #CONST 或 #define 执行条件编译
在源代码文件的顶部键入对应于编程语言的适当语句。
Language
语句
结果
Visual Basic
#CONST TRACE = true
启用跟踪
#CONST TRACE = false
禁用跟踪
#CONST DEBUG = true
启用调试
#CONST DEBUG = false
禁用调试
C#
#define TRACE
启用跟踪
#undef TRACE
禁用跟踪
#define DEBUG
启用调试
#undef DEBUG
禁用调试
禁用跟踪或调试
从源代码中删除编译器指令。
- 或 -
注释掉编译器指令。
注意 当准备进行编译时,可以从“生成”菜单中选择“生成”,或者使用命令行方法但不键入 d:,以定义条件编译符号。