阻止Visual Studio编辑器重新格式化#if ... #endif

时间:2012-05-17 19:43:35

标签: c# visual-studio visual-studio-2008

假设我在C#中有以下代码:

void Func () {
    int i=3;

    #if DEBUG
    ...
    #endif

    for (int j=0;j<i;j++) {
        ...
    }
}

如果我使用Edit->Advanced->Format document,它会重新格式化为此(使用我当前的代码格式设置):

void Func ()
{
    int i = 3;

#if DEBUG
    ...
#endif

    for ( int j = 0; j < i; j++ )
    {
        ...
    }
}

有没有办法阻止#if#endif行移到最左边?我找不到这些设置,但我希望有一个注册表设置来控制它的工作原理。

任何建议都会非常感激 - 这种行为让我发疯,因为我的代码有几百个这样的块,它们一直被VS打破。

2 个答案:

答案 0 :(得分:2)

我一直在使用的一种风格是为#tag添加空格,如此

void Func ()
{
    int i = 3;

#   if DEBUG
    ...
#   endif

    for ( int j = 0; j < i; j++ )
    {
        ...
    }
}

.. if块看起来像是正确排列代码并且重新格式化代码不会移动预处理器标记。

答案 1 :(得分:0)

在“工具/选项”下,深入查看“文本编辑器”/“C#/选项卡”。在该设置页面上,将智能缩进更改为阻止。这将停止预处理器线的缩进,并且需要权衡丢失其他功能。我对这个设置不够专业,无法告诉你其他格式化的东西会丢失,但这给出了一般的想法: http://www.blackwasp.co.uk/VSTabs.aspx