当#if DEBUG运行时

Sac*_*nth 29 .net c#

我在C#类中有这个代码.

#if DEBUG
        private const string BASE_URL = "http://www.a.com/";
#else
        private const string BASE_URL = "http://www.b.com//";
#endif
Run Code Online (Sandbox Code Playgroud)

我想问的是什么时候

#if DEBUG
Run Code Online (Sandbox Code Playgroud)

代码中的路径被执行了吗?

它会被执行吗?

  1. 当我在Visual Studio中运行调试会话时?
  2. 当我从调试文件夹手动运行有问题的exe或dll时?
  3. 我忘记提及的任何其他情况?

Dan*_*npe 48

#if DEBUG 这是一个预处理器定义.

它在您定义DEBUG常量时编译.是的,它是Debug Build Configuration的默认设置.

Visual Studio 2010项目属性: Visual Studio 2010项目属性

如果Define DEBUG constant选中,VS将编译:

private const string BASE_URL = "http://www.a.com/";
Run Code Online (Sandbox Code Playgroud)

否则(未选中)VS将编译:

private const string BASE_URL = "http://www.b.com//";
Run Code Online (Sandbox Code Playgroud)


Bri*_*sen 13

这是一个预处理器指令.执行调试构建时会编译DEBUG部分中的代码(更具体地说,在定义DEBUG常量时).即如果你进行调试构建,BASE_URL将指向www.a.com.否则它将指向www.b.com.


Run*_* FS 8

使用DEBUG指令编译时.因此,如果设置它,则只有第一行将是已编译二进制文件的一部分,如果未设置,则第二行将成为二进制文件的一部分.

在VS中编译调试配置时默认设置DEBUG,但您可以手动为任何配置设置DEBUG


Ima*_*idi 6

VS 2017实际上会检测到活动配置,例如,如果选择了发布配置,则会使调试条件变灰

在此处输入图片说明

  • 整个概念的视觉表现非常好。一张图片毕竟包含1000个字:) (2认同)