C#有预定义的符号吗?

时间:2012-10-28 07:15:58

标签: c# preprocessor-directive

在C ++中我有这个:http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx

所以我可以编写只在我调试时才运行的代码,或者只针对特定平台(PowerPC,MIPS,Power Macintosh等),它不再受支持,但它是一个非常好的例子。 您也可以在32位和64位系统之间进行切换(当然,这只有在您发布2个不同版本时才有用,每个版本都有自己的处理器架构。在C#中这是一个罕见的需求但是, 那里)。

所以我的问题是,如果C#中存在类似的东西。 我意识到没有宏,但有一些符号(即使有相同的#define关键字。所以至少对我来说它是有意义的 - 它应该存在。

3 个答案:

答案 0 :(得分:6)

在.NET中有Pre-processing directives。要在调试时包含一些代码块,您可以这样做:

#define Debug      // Debugging on

class PurchaseTransaction
{
   void Commit() {
      #if Debug
         CheckConsistency();
      #else
         /* Do something else
      #endif
   }
}

如果转到Visual Studio中的“项目设置”,请选中“构建”选项卡。在那里,您可以为所选配置定义调试和跟踪常量(默认情况下已选中Debug版本)。您还可以定义其他条件编译符号。

enter image description here

答案 1 :(得分:5)

MSDN文档未列出任何预定义的名称。似乎所有人都需要来自#define和/ define。

Check IF here

答案 2 :(得分:1)

尽管似乎没有针对不同操作系统的目标,但针对不同的.NET frameworks还是有一些目标:

  • .NET Framework
    • NET20NET35NET40NET45NET451NET452NET46NET461NET462NET47NET471NET472
  • .NET标准
    • NETSTANDARD1_0NETSTANDARD1_1NETSTANDARD1_2NETSTANDARD1_3NETSTANDARD1_4NETSTANDARD1_5NETSTANDARD1_6NETSTANDARD2_0
  • .NET Core
    • NETCOREAPP1_0NETCOREAPP1_1NETCOREAPP2_0NETCOREAPP2_1