为了账号安全,请及时绑定邮箱和手机立即绑定

检测 DEBUG、RELEASE 和我自己的模式 C#

检测 DEBUG、RELEASE 和我自己的模式 C#

C#
小怪兽爱吃肉 2021-10-23 16:49:45
我有 DEBUG、RELEASE 和 MYMODE 配置模式。我怎样才能检测到它们?#if DEBUG#endif只检测 DEBUG 和其他任何东西,但不检测 RELEASE 和 MYMODE 之间的区别。我该怎么做?更多信息:我在想这样的事情:#if DEBUG#elif RELEASE#elif MYMODE但是如果我有 RELEASE 或 MYMODE,代码的所有部分都是灰色的,只有在 DEBUG 模式下,DEBUG 部分是彩色的。我也试过#define MYMODE但是为此, MYMODE 始终为 true 并不影响设置的模式。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

首先,您可以在#if以下位置使用布尔运算符:


#if DEBUG || MYMODE

#endif

其次,您可以使用#else和#elif来分解事物...


#if DEBUG

// Debug only

#elif MYMODE || RELEASE

// In either release or MYMODE

#else

// Otherwise

#endif

这两者的组合涵盖了大多数用例。


查看完整回答
反对 回复 2021-10-23
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

MyMode 是一种配置。但是,就其本身而言,它并没有定义任何条件编译符号。

您可以通过项目编译设置1或通过将-define选项传递给 csc 来更改这些设置。如果您查看 Debug 配置的编译设置,您会发现DEBUG条件编译符号已经定义2,但RELEASERelease 配置中没有定义符号。

不要求(正如您在上面会发现的那样)配置与其定义的符号之间存在任何关系。

#if (和系列)被定义为与条件编译一起使用。


1项目 -> 属性 -> 构建 -> 常规。

2在某些版本的 Visual Studio 中,有一个专门的复选框,而不是在条件编译符号中列出,但效果是相同的。如果您卸载项目并检查 XML,您会发现所有常量都存储在<DefineConstants>元素中。


查看完整回答
反对 回复 2021-10-23
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

相同:


#if MYMODE

#endif


#if RELEASE

#endif

或更复杂的:


#if (DEBUG && MYMODE)

#endif


#if (!RELEASE && MYMODE)

#endif


查看完整回答
反对 回复 2021-10-23
  • 3 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信