目的是能够在生产版本的数据库中在运行时切换调试调用...

有帮助吗?

解决方案

没有;条件方法和预处理程序指令的要点是它们使编译器省略最终可执行文件中的代码。这些运行时等效于 if 语句。

然而,面向方面的编程大致相当于你所要求的内容,因为它允许你将代码注入正在运行的程序,否则就不存在。

编辑:正如Joe所提到的,这样做的方法是针对像log4net这样的日志框架进行编程,该框架允许对记录的内容进行细粒度控制。

其他提示

不在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为正常的代码检查,这显然可以根据需要进行切换。

不,但大多数日志记录子系统都提供此功能。例如。使用log4net,您可以动态更改日志记录级别,或者如果使用System.Diagnostics.Trace,您可以更改 TraceSwitch 动态水平。

你显然不能像这样影响二进制代码(与#if语句一样)。

我通常做的是确保我的代码包含大量日志记录,这些日志记录由跟踪开关。这样,您可以在生产中运行系统,只需很少或不需要记录,当您想要研究某些问题时,可以通过更改配置文件来切换登录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top