【问题标题】:Get compiletime constants in C#在 C# 中获取编译时常量
【发布时间】:2021-04-25 14:09:09
【问题描述】:

在 C# 中,您可以定义编译时常量,可以检查这些常量以配置编译

#define MY_CONST
#if MY_CONST
    ...
#else
    ...
#endif

但我找不到查看当前行定义了哪些常量的方法。 我需要类似的东西 #warning DEFINED_CONSTANTS 那会给我DEBUG; NET5_0

【问题讨论】:

  • 请问您这样做的目的是什么?另外:完整的列表会很长而且难以辨认
  • 通常您只需检查要设置的特定变量。我无法想象为什么人们想知道所有现有的......
  • 是的,在你得到这个列表之后你会用那个列表做什么?
  • 由于定义是预编译器指令,并且可以设置为编译器参数,我不确定谈论“在当前行定义”是否有意义。在编译单元的编译时可能有意义。

标签: c# msbuild csc


【解决方案1】:

不管其他一切,你可以只设置一个字段

#if MY_CONST
   public static bool IsMyConst = true;
#else
   public static bool IsMyConst = false;
#endif

加入胡椒和盐调味。

【讨论】:

    【解决方案2】:

    一段时间后,我发现可以通过 MSBuild 显示定义的常量

      <Target Name="ShowConstants" AfterTargets="AfterBuild">
        <Warning Text="$(DefineConstants)" />
      </Target>
    

    为 net5.0 构建提供TRACE;DEBUG;NET;NET5_0;NETCOREAPP。 它不显示给定行的常量,但至少显示当前配置的常量。

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2014-02-10
      • 2014-05-14
      相关资源
      最近更新 更多