c# - 具有不同缩进大小的文件的 Visual Studio 2015 缩进行为

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

我使用的是安装了 Productivity Power Tools 2015 扩展的 Visual Studio Enterprise 2015 (RTM)。

我的 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
  }
}

更糟糕的是,粘贴代码或使用重构部分围绕代码格式化,完全弄乱了缩进。在更深的嵌套 block 中,这真的很烦人,必须修复缩进以使代码保持可读性。

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

这是一个错误,还是我缺少 VS 2015 中的扩展或设置?

最佳答案

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

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

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

因此,我根据更新后的代码风格重新格式化了所有遗留代码文件,并将其纳入版本控制。这样,就没有缩进问题,并且 git blame 可以忽略那些空白更改。

关于c# - 具有不同缩进大小的文件的 Visual Studio 2015 缩进行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114940/

相关文章:

c# - 如何使用C#读取文本文件中的日期

c++ - 如何定义与使用 lambda 兼容的函数指针并将捕获作为回调

vim 确实删除了以 # 字符开头的所有行的缩进

javascript - 如何自动缩进完整的 javascript 项目?

c++ - WiX Heat.exe 在 VS2008 -> VS2015 升级后生成不同的输出

sublimetext2 - 如何强制 Sublime Text 2 使用 4 个空格制表符? (有时会变成空格)

c# - Azure:无需定义附加配置即可获取服务证书

c# - 覆盖文件权限 - C#/ASP.NET

c# - 获取当前项目中文件的文件路径

CSS 未在 ASP.NET Core 中完全呈现