【问题标题】:How to force indentation of C# conditional directives?如何强制 C# 条件指令缩进?
【发布时间】:2009-08-24 08:58:36
【问题描述】:

是否有一个选项如何在 Visual Studio 中的 Edit -> Advanced -> Format document 之后禁用 #if、#endif 和其他指令不缩进?

谢谢!

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    StyleCop

    StyleCop 分析 C# 源代码以强制执行一组样式和一致性规则。它可以从 Visual Studio 内部运行或集成到 MSBuild 项目中。 StyleCop 也被集成到许多第三方开发工具中。

    您甚至可以添加自定义规则:Creating Custom Rules for Microsoft Source Analyzer

    希望对你有帮助。

    【讨论】:

    • 谢谢!我没有时间尝试创建自定义规则,但似乎有可能。
    【解决方案2】:

    恐怕在 Visual Studio 中没有直接设置。对于 C#,这是由 Roslyn issue 12306 跟踪的,它于 2016 年年中开放,到 2021 年底仍然开放(Visual Studio 自 2015 年以来一直提供 a similar option for C/C++)。

    作为替代方案,您可以尝试使用外部工具来格式化您的代码(例如AStyle)。您可以在 VS 中创建一个宏来关闭当前文件,在文件上运行外部工具并重新打开它(并且可能将光标重新定位在以前的位置),这样您就可以从 Visual 格式化您的代码工作室。

    无论如何,我不确定这项任务是否值得努力......

    否则,您可能会编写自己的宏来缩进当前文件中的预处理器指令它已被 VS 格式化后,甚至无需使用外部工具(在为了获得与 VS 中完全相同的格式)。

    【讨论】:

    • 感谢您提供信息。其实,我只是好奇。我不打算在这件事上投入时间,因为这只是一个小问题,而且 Visual Studio 的行为可能会在未来的版本中发生变化——这将使我的任何努力都毫无用处:-(
    【解决方案3】:

    您可以将其隐藏在某个静态帮助程序类中。

    internal class Helper
    {
        internal static bool IsDebugBuild
        {
            get
            {
    #if DEBUG
                return true;
    #endif
                return false;
            }
        }
    }
    

    那么你可以像下面这样使用它:

    if (Helper.IsDebugBuild)
    {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多