【发布时间】:2023-04-11 06:05:01
【问题描述】:
我知道您可以在 C# 中使用 #if DEBUG 等,但是否可以创建完全忽略的方法或类,包括所有不的用法包裹在#if DEBUG 块内?
类似:
[DebugOnlyAttribute]
public void PushDebugInfo()
{
// do something
Console.WriteLine("world");
}
然后:
void Main()
{
Console.WriteLine("hello ");
Xxx.PushDebugInfo();
}
如果定义了DEBUG,它将打印“hello world”,否则只打印“hello”。但更重要的是,MSIL 根本不应该在发布版本中包含方法调用。
我相信我所追求的行为类似于 Debug.WriteLine,它的调用被完全删除,并且对发布版本的性能或堆栈深度没有影响。
并且,如果可能在 C# 中,任何使用此方法的 .NET 语言的行为是否相同(即编译时与运行时优化)。
还标记了f#,因为基本上我在那里需要这个方法。
【问题讨论】:
-
ConditionalDebug 属性:msdn.microsoft.com/en-us/library/aa664622%28v=vs.71%29.aspx
标签: f# c# .net f# debug-build