是否可以在.NET中创建仅调试方法?

Pau*_*ner 9 .net debugging

是否可以创建一个像System.Diagnostics.Debug类一样执行调试帮助的方法?

我正在寻找一种方法来构造一个方法,该方法在由定义的DEBUG条件编译符号编译的程序集调用时,导致操作,并且在没有定义符号的程序集调用时是无操作.

如果可能的话,我希望对调试方法的调用可以增加最小的开销或增加程序集的发布版本的大小.

为了澄清,调试方法应该在以发布模式编译的程序集中.对方法的调用应仅在从具有在方法调用范围中定义的DEBUG符号的程序集调用时生成操作.

SLa*_*aks 31

Conditional属性添加到方法中,如下所示:

[Conditional("DEBUG")]
public void Whatever() {
    //...
}
Run Code Online (Sandbox Code Playgroud)

注意该方法必须返回void,并且不能有任何out参数; 否则,就无法删除对它的调用.

该方法将被编译到程序集中,但符合CLS的编译器只会在它们正在编译的程序集定义了DEBUG时才发出对该方法的调用.请注意,C++编译器不符合CLS,并始终发出调用.


Rub*_*ink 6

ConditionalAttribute

BTW被调用方法的代码保留在程序集中 - 它是在编译时被删除的对它的调用

Bonus主题博客文章:http://blogs.msdn.com/ericlippert/archive/2009/09/10/what-s-the-difference-between-conditional-compilation-and-the-conditional-attribute.aspx