[原创]VB.NET 判断程序是否运行于开发环境中
有时候我们需要判断程序是运行于开发环境中(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 String
10 b = True
11 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 实际上也已经被忽略掉了.
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架