在我看到的所有关于#if编译器指令的例子中,它们都使用了“DEBUG”。我可以以同样的方式使用“RELEASE”来排除在调试模式下编译时不想运行的代码吗?我想用这个块包围的代码会发送一堆电子邮件,我不想在测试时意外地发送这些邮件。


当前回答

为此,您可以使用#if(!DEBUG)。

其他回答

为此,您可以使用#if(!DEBUG)。

在我的VS install (VS 2008) #if RELEASE不工作。但是你可以使用#if !DEBUG

例子:

#if !DEBUG
SendTediousEmail()
#endif

您可以创建自己的条件编译时符号(任何您喜欢的名称)。 进入“项目构建对话框”,位于项目属性框中, 菜单选项:Project->[projectname]属性…

你也可以在c#代码文件的顶部定义它们。如:

#define RELEASE
// or
#undef RELEASE

你可以在#if语句中使用该符号:

#if RELEASE
// code ...
#elif …
// code ...
#endif

// or

#if !RELEASE
// code ...
#endif

另一个选择:

#If CONFIG = "Release" Then

....

#End If

我知道这是一个老问题,但值得一提的是,您可以在DEBUG和RELEASE之外创建自己的配置,例如TEST或UAT。

如果在项目属性页的Build选项卡上,你将“条件编译符号”设置为TEST(例如),你就可以使用这样的构造

#if (DEBUG || TEST )
    //Code that will not be executed in RELEASE or UAT
#endif

您可以出于特定的原因使用此构造,例如,如果需要,可以使用不同的客户端,甚至可以使用整个Web方法。我们过去也使用过这种方法,因为某些命令在特定的硬件上导致了问题,所以当部署到硬件X时,我们有一个应用程序的配置。