【问题标题】:Programmatically check the build configuration以编程方式检查构建配置
【发布时间】:2016-11-18 16:18:51
【问题描述】:

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

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

但是,如果我设置了不同的配置,比如:TEST,那么这不起作用:

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

有没有办法检查这些?

【问题讨论】:

  • 将“TEST”添加到项目属性 -> 构建 -> 条件编译符号,就可以了
  • 记录在案 - 您实际上并没有检查程序中的配置。 #if 是一个预编译器指令,这意味着它正在编译过程中执行。所以#if .. #else 结构不是你程序的一部分。
  • 注意,您可能需要重新启动 Visual Studio 才能在编辑器中正确显示。我在 VS 2017 上做过。但是,即使没有重新启动,编译也会按预期工作。似乎是指令渲染的问题。

标签: c# .net c-preprocessor preprocessor-directive


【解决方案1】:

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

如果您需要使用额外的常量,只需在条件编译符号中输入您自己的。

您的案例的步骤:

  1. 转到您的项目 -> 属性 -> 构建
  2. 将配置切换到测试
  3. 在条件编译符号字段中输入 TEST

运行您的代码并享受 :)

【讨论】:

    【解决方案2】:

    DEBUG 常量是一个特殊的常量,每个配置中的每个项目都有一个设置是否应该定义。默认情况下它在Debug 中打开,在Release 中关闭,但它是完全可配置的——打开项目的属性页面并在“构建”下查看,那里有一个复选框,上面写着“定义调试常量”。

    因此,定义新的构建配置不会自动免费为您提供任何其他编译常量。但这并不意味着您不能手动创建它们。

    要创建编译常量,请将其添加到“条件编译符号”列表中 - 但请确保在正确的构建配置中这样做。

    【讨论】:

    • 只是为了进一步澄清:要将编译常量添加到 Visual Studio gui 中的“条件编译符号”列表中,只需输入用分号分隔的常量名称,它们将被设置为是的:NOTDEVMODE; DEFINITELYNOTDEVMODE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2023-02-18
    • 2018-06-13
    • 2015-03-03
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多