我使用的是安装了 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/