在 C# 中获取编译时常量

Get compiletime constants in C#

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

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

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

不考虑其他,设置一个字段即可

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

加入胡椒粉和盐调味。

一段时间后,我发现可以使用

通过 MSBuild 显示定义的常量
  <Target Name="ShowConstants" AfterTargets="AfterBuild">
    <Warning Text="$(DefineConstants)" />
  </Target>

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