如何强制C#条件指令的缩进?

17

有没有选项可以在 Visual Studio 的“编辑”->“高级”->“格式化文档”之后禁用 #if、#endif 和其他指令的缩进呢?

谢谢!

3个回答

7

看看StyleCop

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

您甚至可以添加自定义规则:为Microsoft Source Analyzer创建自定义规则

希望能帮到您。


谢谢!我没有时间尝试创建自定义规则,但似乎这是可能的。 - MartyIX

3

你可以将它隐藏在某个静态助手类中。

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

然后您可以按以下方式使用它:
if (Helper.IsDebugBuild)
{
    ...
}

3
很抱歉,Visual Studio 中没有直接的设置。对于 C#,这是由 Roslyn issue 12306 跟踪的,该问题于 2016 年中期被提出,截至 2021 年底仍然未解决(自 2015 年以来,Visual Studio 已为 C / C ++ 提供了 类似的选项)。
作为替代方案,您可以尝试使用外部工具格式化代码(例如 AStyle)。您可以在 VS 中创建一个宏,关闭当前文件,在文件上运行外部工具并重新打开它(可能还会将光标重新定位到先前的位置),因此您将能够从 Visual Studio 格式化代码。
无论如何,我不确定这个任务是否值得付出努力...
否则,您可以编写自己的宏,在 VS 格式化当前文件后缩进预处理器指令,而无需使用外部工具(这可能非常痛苦,以便获得与 VS 完全相同的格式)。

谢谢您提供的信息。实际上,我只是好奇而已。我不打算在这个问题上投入时间,因为它只是一个小问题,并且由于Visual Studio的行为可能会在未来版本中发生变化 - 这将使我的任何努力都变得无用 :-( - MartyIX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接