具有不同缩进大小

时间:2015-08-20 09:47:39

标签: c# visual-studio-2015 auto-indent

我正在使用Visual Studio Enterprise 2015(RTM),其安装的扩展名为Productivity Power Tools 2015。

我对C#的缩进设置是智能缩进,制表符+缩进大小4,插入空格。我在关闭大括号,分号和粘贴时启用了自动格式化。

但是,在我的项目中,我有许多旧代码文件,这些代码文件是使用缩进(空格)大小为2创建的。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
    }
  }
}

使用上面的示例,在Visual Studio 2013 Ultimate中,当向Method添加代码时,它会检测到Method的缩进是6个空格,并且在编写代码时会为主体添加4个空格

同样,当向类添加新方法时,它会在关闭大括号时修复缩进,以便与其他方法正确对齐。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
        // New line starts here
    }

    public void NewlyAdded()
    {
    } // Typing this fixes intendation
  }
}

现在在VS 2015中,这种行为已经消失。它严格使用设置中定义的空间大小。因此,当我在方法体中编写代码时,它会插入3 * 4 = 12个空格。在VS 2013中键入右括号时,它也不会对齐方法。

namespace Foo
{
  public class Bar
  {
    public void Method()
    {
            // New line starts here   
    }

        public void NewlyAdded()
        {
        } // Typing closing brace doesn't align
  }
}

更糟糕的是,粘贴代码或使用重构部分地格式化了周围的代码,完全弄乱了缩进。在更深层次的嵌套块中,它确实很烦人,必须修复缩进以使代码保持可读性。

我希望避免格式化整个文档并检查这些更改到版本控制,只是为了能够在编写时修改代码而不会出现缩进问题。

这是一个错误,还是我错过了VS 2015中的扩展程序或设置?

1 个答案:

答案 0 :(得分:0)

我在dotnet / roslyn项目的相关GitHub问题中发布了同样的问题。 https://github.com/dotnet/roslyn/issues/4351

尽管此问题至今尚未解决,但讨论的结果是Microsoft不希望在roslyn的单个文件中支持混合缩进。

GitHub问题中所述的部分Microsoft对此的回答是新的.editorconfig文件:https://blogs.msdn.microsoft.com/visualstudio/2016/11/28/productivity-in-visual-studio-2017-rc/

由于这个原因,我根据我更新的代码样式重新格式化了所有遗留代码文件,并将其检入版本控制。这样,没有缩进问题,git blame可以忽略那些空格的变化。

相关问题