【发布时间】:2009-05-02 07:26:16
【问题描述】:
目的是能够在运行时从生产版本的数据库中打开调试调用...
【问题讨论】:
标签: c# debugging runtime c-preprocessor
目的是能够在运行时从生产版本的数据库中打开调试调用...
【问题讨论】:
标签: c# debugging runtime c-preprocessor
没有;条件方法和预处理器指令的关键在于它们会导致编译器从最终的可执行文件中省略代码。这些的运行时等价物是if 语句。
但是,aspect-orientated programming 大致相当于您所要求的,因为它允许您将代码注入正在运行的程序中,否则该程序不会存在。
编辑:正如 Joe 所提到的,实现这一点的方法是针对 log4net 之类的日志框架进行编程,该框架允许对所记录的内容进行细粒度控制。
【讨论】:
不在预处理器级别。毕竟,您正在运行该过程的结果。当然,您可以将预处理器检查更改为普通代码检查,显然可以根据需要进行切换。
【讨论】:
没有,但大多数日志记录子系统都提供此功能。例如。使用 log4net,您可以动态更改日志记录级别,或者如果使用 System.Diagnostics.Trace,您可以动态更改 TraceSwitch 级别。
【讨论】:
你显然不能影响二进制代码本身(如#if语句)。
我通常做的是确保我的代码包含大量由trace switches 激活的日志记录。这样您就可以让系统在生产环境中运行而很少或根本没有日志记录,当您想研究一些问题时,您可以通过更改配置文件来启用日志记录。
【讨论】: