我正在使用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中的扩展程序或设置?
答案 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可以忽略那些空格的变化。