RELEASE
未定义,但您可以使用
#if (!DEBUG)
...
#endif
不,它不会,除非你做一些工作。
这里重要的部分是 DEBUG 的真正含义,它是一种定义的常量,编译器可以检查。
如果您检查项目属性,在 Build 选项卡下,您会发现三件事:
标有“条件编译符号”的文本框
标有“定义调试常量”的复选框
标有“定义跟踪常数”的复选框
没有这样的复选框,也没有名称为 RELEASE 的常量/符号预定义。
但是,您可以轻松地将该名称添加到标有条件编译符号的文本框中,但请确保在此之前将项目配置设置为发布模式,因为这些设置是每个配置的。
所以基本上,除非您将其添加到文本框中,否则 #if RELEASE
在任何配置下都不会生成任何代码。
没有。
在调试配置中,有一个 DEBUG
定义的常量(由 Visual Studio 自动定义),而没有为发布模式定义这样的常量。检查构建下的项目设置。
在 Project -> Build 下选择 [Define DEBUG constant] 就像在每个文件的开头包含 #define DEBUG。
如果要为发布配置定义 RELEASE 常量,请访问:
项目属性 -> 构建
选择发布模式
在条件编译符号文本框中输入:RELEASE
#if (RELEASE) [RequireHttps] #endif
非常有用
在我的 VS 安装(VS 2008)上,#if RELEASE
不起作用。但是您可以只使用 #if !DEBUG
例子:
#if !DEBUG
SendTediousEmail()
#endif
我以前从未见过……但我见过:
#if (DEBUG == FALSE)
和
#if (!DEBUG)
那为你工作?
!
运算符可以工作,就像你的第二个例子一样。
您可以为此目的使用 #if(!DEBUG)
。
“Pop Catalin”做对了。根据构建类型控制定义提供了很大的灵活性。例如,您可以在同一个解决方案中拥有“DEBUG”、“DEMO”和“RELEASE”配置。这可以避免使用两种不同的解决方案进行重复编程。
因此,当定义了 RELEASE 条件编译符号时,是 #if RELEASE
或 #if (RELEASE)
的工作方式与 #if DEBUG
相同。
以下内容来自“Pop Catalin”帖子:如果要为发布配置定义 RELEASE 常量,请转到:* Project Properties -> Build * Select Release Mode * 在 Conditional compilation symbols 文本框中输入:RELEASE
我知道这是一个老问题,但值得一提的是,您可以在 DEBUG 和 RELEASE 之外创建自己的配置,例如 TEST 或 UAT。
如果然后在项目属性页面的 Build 选项卡上将“条件编译符号”设置为 TEST(例如),则可以使用诸如
#if (DEBUG || TEST )
//Code that will not be executed in RELEASE or UAT
#endif
您可以出于特定原因使用此构造,例如,如果您有需要,可以使用不同的客户端,甚至可以使用整个 Web 方法。过去我们也使用过它,其中一些命令会导致特定硬件出现问题,因此我们在部署到硬件 X 时为应用程序配置了一个配置。
您可以创建自己的条件编译时符号(您喜欢的任何名称)。转到“项目构建对话框”,位于项目属性框中,菜单选项:项目-> [项目名称] 属性...
您还可以在“C# 代码文件的顶部”定义它们。喜欢:
#define RELEASE
// or
#undef RELEASE
您可以在#if 语句中使用该符号:
#if RELEASE
// code ...
#elif …
// code ...
#endif
// or
#if !RELEASE
// code ...
#endif
虽然 M4N's answer (#if (!DEBUG)
) 最有意义,但另一种选择可能是使用预处理器来修改其他标志的值;例如
bool isRelease = true;
#if DEBUG
isRelease = false;
#endif
或者更好,而不是指我们是否处于发布模式或调试模式,使用定义预期行为的标志并根据模式设置它们:
bool sendEmails = true;
#if DEBUG
sendEmails = false;
#endif
这与使用预处理器标志不同,因为标志仍然存在于生产环境中,因此每次调用该代码时都会产生 if (sendEmails) {/* send mails */}
的开销,而不是在发布中存在但在调试中不存在的代码,但这可以是有利;例如,在您的测试中,您可能希望在模拟中调用 SendEmails()
方法,同时在调试中运行以获得额外的输出。
另外的选择:
#If CONFIG = "Release" Then
....
#End If
为什么不只是
#if RELEASE
#undef DEBUG
#endif
/d:RELEASE
也可以。您还可以将其添加到发布配置(项目属性构建选项卡)下的条件编译符号。
RELEASE
。