0

目的是能够在运行时从生产构建的数据库中打开调试调用......

4

4 回答 4

2

不; 条件方法和预处理器指令的关键在于它们会导致编译器从最终的可执行文件中省略代码。这些的运行时等价物是一个if语句。

但是,面向方面的编程大致相当于您所要求的,因为它允许您将代码注入正在运行的程序中,否则该程序不会存在。

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

于 2009-05-02T07:30:23.000 回答
1

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

于 2009-05-02T07:29:23.767 回答
1

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

于 2009-05-02T07:31:07.117 回答
0

您显然不能影响二进制代码本身(如#if 语句)。

我通常做的是确保我的代码包含大量日志记录,这些日志记录由跟踪开关激活。这样,您可以让系统在生产环境中运行而很少或没有日志记录,并且当您想研究一些问题时,您可以通过更改配置文件来打开日志记录。

于 2009-05-02T07:30:13.297 回答