11

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

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

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

4

3 回答 3

8

在 .NET 中有预处理指令。要仅在调试时包含一些代码块,您可以执行以下操作:

#define Debug      // Debugging on

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

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

在此处输入图像描述

于 2012-10-28T07:23:03.417 回答
7

尽管似乎没有针对不同的操作系统,但有一些针对各种不同的.NET 框架

  • .NET 框架
    • NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471,NET472
  • .NET 标准
    • NETSTANDARD1_0, NETSTANDARD1_1, NETSTANDARD1_2, NETSTANDARD1_3, NETSTANDARD1_4, NETSTANDARD1_5, NETSTANDARD1_6,NETSTANDARD2_0
  • .NET 核心
    • NETCOREAPP1_0, NETCOREAPP1_1, NETCOREAPP2_0,NETCOREAPP2_1
于 2018-11-28T16:22:07.523 回答
5

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

在这里检查 IF

于 2012-10-28T07:24:21.127 回答