Monodevelop将#if和#endif之间的所有内容标记为C#文件中的注释

时间:2012-10-16 15:04:00

标签: monodevelop preprocessor-directive

我正在使用与Unity游戏引擎捆绑在一起的MonoDevelop版本。我以前从未在C#中使用过#if /#endif,所以我从未注意到这一点。我在一个新的空文件上检查了这个。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我已经玩了一下这个,我注意到的是条件代码 “#if DEBUG”块被注释掉了。当你已经达到构建发布代码的程度时,它可能会有所帮助。 “调试”测试内容仍保留在您的代码中,但看起来像一个注释。这是我正在玩的测试,ymmv:

using System;
namespace testConditionalCompile
{
   class MainClass
   {
      public static void Main (string[] args)
      {

#if RELEASE         
          Console.WriteLine("Release code"); 
#endif          

#if DEBUG   
          Console.WriteLine("Debug code");          
#endif
        }
    }
}

我意识到条件代码块不是写它的最好方法,但我认为它最能说明我的观点。

答案 1 :(得分:0)

对于那些处理#if UNITY_IOS ... #elif UNITY_ANDROID预处理程序指令中显示为已注释和/或出现奇怪代码格式问题的问题的人来说, Monodevelop只会根据您当前选择的任何平台格式化代码在构建设置中。所以你在下面看到的是故意的,因为Monodevelop处理的代码与注释代码基本相同。 逻辑是因为它不会被执行,甚至不包含在构建中,因此不应该在编辑器中检查它。因此格式化/评论出来的处理。我个人觉得这很烦人,因为我应该能够编写/查看格式化代码,无论我在构建设置中选择的当前平台如何。

screenshot