VB.NET 判断程序是否运行于开发环境中

来源:岁月联盟 编辑:exp 时间:2011-04-06

有时候我们需要判断程序是运行于开发环境中(IDE中,编译生成.exe之前),还是运行于编译之后(.exe文件直接运行).

我在以前的BLOG中,曾写过一篇文章: 《在VB和VB.NET程序中判断当前是否运行于开发环境中》,结果BLOG挂掉了,网上还能找到该文章的转载(没有注明是我写的,相当郁闷).文中介绍的方法的确可以判断出是否为开发环境中,但是会引发一个Exception,看着不爽.后来我又想了个办法,可以不引发异常.

 1     Public bIsDebugMode As Boolean = GetDebugMode() 2  3     Private Function GetDebugMode() As Boolean 4         Dim b As Boolean = False 5         Debug.Print(TestDebugMode(b)) 6         Return b 7     End Function 8  9     Private Function TestDebugMode(ByRef b As Boolean) As String10         b = True11         Return "程序正运行于开发环境中."12     End Function
原理: VB 或 VB.NET 在编译生成 .exe 文件时,会忽略代码中所有的 Debug.Print 语句,这样的话 Debug.Print 后面无论跟什么内容都不会被执行.

用法: 1.VB.NET: 把上面的代码扔到一个 Module 中,然后随便某处查看 bIsDebugMode 的值, True 表示运行于 IDE, False 表示是在生成了的 .exe 中运行的.

2.VB6: 适当变一下语法即可使用.原理是一样的.

注意: 如果把上面的代码扔到类库中,然后编译成 .dll, 在新工程中直接引用 .dll (而不是引用类库的工程),那么 bIsDebugMode 会直接返回 False. 也就是说,生成 .dll 时, Debug.Print 实际上也已经被忽略掉了.