以编程方式检查构建配置

17

使用DEBUG配置,我可以使用这种语法打开或关闭行为:

#if DEBUG
    Console.WriteLine("Debug");
#else
    Console.WriteLine("Not Debug");
#endif

然而,如果我设置了一个不同的配置,比如: TEST,那么这个就不起作用:

#if TEST
    Console.WriteLine("Test");
#else
    Console.WriteLine("Not Test");
#endif

有没有办法检查这些东西?


请阅读以下内容:https://dev59.com/DnA75IYBdhLWcg3wrbG_ - NinjaDeveloper
将“TEST”添加到项目属性->构建->条件编译符号中,它就可以工作了。 - user6522773
1
记录一下 - 实际上你并没有在程序中检查配置。#if 是一个预编译指令,这意味着它是在编译过程中被执行的。因此,#if .. #else 结构不是你程序的一部分。 - enkryptor
请注意,您可能需要重新启动Visual Studio才能在编辑器中正确显示此内容。我在VS 2017上进行了重新启动。但是,即使没有重新启动,编译也可以按预期工作。似乎这是指令渲染的问题。 - David
2个回答

11

是的,你可以使用不同的配置。如果你选择了Debug配置管理器中的Debug配置,DEBUG符号会自动生成。你可以检查一下。前往你的项目 -> 属性 -> 构建 -> 定义DEBUG常量

如果你需要使用其他额外的常量,只需在条件编译符号中输入即可。

对于你的情况,请按以下步骤操作:

  1. 前往你的项目 -> 属性 -> 构建
  2. 切换到Test配置
  3. 在条件编译符号字段中输入TEST

运行代码并享受 :)


10
DEBUG 这个常量非常特别,在每个配置中,每个项目都有一个设置来决定它是否应该被定义。默认情况下,Debug 中打开,而在 Release 中关闭,但完全可配置 - 打开项目的属性页并查看 "构建" 下面,那里有一个复选框,写着 "Define DEBUG constant."。
因此,定义一个新的构建配置并不会自动为您提供任何其他编译常量,但这并不意味着您不能手动创建它们。
要创建一个编译常量,请将其添加到 "Conditional Compilation Symbols" 列表中 - 但一定要在正确的构建配置中执行此操作。

1
进一步澄清一下:要将您的编译常量添加到Visual Studio GUI中的“条件编译符号”列表中,只需输入以分号分隔的常量名称,它们将被设置为true:NOTDEVMODE; DEFINITELYNOTDEVMODE - Jason Masters

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