你可以标记代码部分仅在Debug版本中被包含吗?

3

非常抱歉问这个超级新手的问题,但我在其他地方找不到答案,而且自己从来没有做过这样的事情(想象一下——当你的公司使用生产环境进行测试时,就会发生这种情况)。

如果Visual Studio提供了某些机制来指定某些代码段(例如日志记录)仅在Debug版本中包含,那将是很好的。这个功能是否存在?我对C#和VB.NET都感兴趣,并且是在VS 2005上,如果有关系的话。

2个回答

8
有几种方法。
要将代码的特定部分标记为仅包含在调试构建中,可以在C#中执行以下操作:
#if DEBUG
    code that will only compile for Debug
#endif

如果您想避免这种情况,您可以使用属性标记方法:

[Conditional("DEBUG")]
public void Log(String message) { ... }

在这种情况下,如果你不是在编译Debug模式,那么对此方法的调用将会自动地从你的编译代码中剥离出来。但是这也有一定的限制。例如,如果你使用了refout参数,或者有返回值,那么你就不能使用这个方法。
你可以在这里阅读更多关于#if指令的内容:C# 预处理器指令,以及关于特性的内容在这里:ConditionalAttribute

我认为这是 #ifdef DEBUG 在调试模式下,编译器会添加 DEBUG 符号。 - Dani
第一个例子也适用于VB.NET,第二个变为<Conditional("DEBUG")> - stevehipwell
@Dani - 默认情况下已定义调试符号。 - stevehipwell
不对,应该是#if,请查看我提供的链接。#ifdef 是C/C++中的用法。 - Lasse V. Karlsen

1
我们在 AssemblyInfo.cs 文件中进行以下操作:
#if DEBUG
  [assembly: AssemblyConfiguration("Debug")]
#else
  [assembly: AssemblyConfiguration("Release")]
#endif
这适用于 C#。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接