C# 为什么花括号缩进在Visual Studio 2015中会出现问题?

C# 为什么花括号缩进在Visual Studio 2015中会出现问题?,c#,visual-studio-2015,C#,Visual Studio 2015,我使用的是Visual Studio 2015候选版本 在以前的Visual Studio版本中,我一直在编程时禁用了自动大括号完成和自动格式化已完成的块}功能 在以前的版本中,创建块时,在键入enter{enter} 这将导致: class Foo { } 与2015年相比,这导致: class Foo { } 是否有我丢失的新设置,或者这是RC中的一个错误?好的,我已经测试过了。结果似乎相当明显-您告诉Visual Studio不要在}上格式化代码,所以它没有这样做 换句话说,旧

我使用的是Visual Studio 2015候选版本

在以前的Visual Studio版本中,我一直在编程时禁用了
自动大括号完成
自动格式化已完成的块}
功能

在以前的版本中,创建块时,在键入
enter
{
enter
}

这将导致:

class Foo
{
}
与2015年相比,这导致:

class Foo
{
    }

是否有我丢失的新设置,或者这是RC中的一个错误?

好的,我已经测试过了。结果似乎相当明显-您告诉Visual Studio不要在
}
上格式化代码,所以它没有这样做

换句话说,旧的Visual Studio中的行为似乎被打破了——即使您指定不希望VS为您进行格式化,它也会这样做。毕竟,当您键入时,光标会出现在此处的
\ucode>:

class Test
{
    _
然后,您只需添加一个
}
,这样

class Test
{
    }
哪些较旧的Visual Studio自动格式化为

class Test
{
}
即使未选中
也会在}
上自动格式化已完成的块。这显然是自动格式化-如果您按下
Ctrl+Z
,它将还原格式化,而不是
}
本身。可以说,VS2015中的行为是对旧版本中存在的错误的修复

当我开始对您的设置使用疯狂的格式设置时,这一点变得更加明显。代码如下:

class Test
{
    public
        string
            Ana
    {
        get; set;
        }
    }
变成

class Test
{
    public
        string
            Ana
    {
        get; set;
        }
        }
在VS2013上!这显然是错误的。另一方面,VS2015不正确地应用任何格式-它只是将插入符号放置在它认为需要的位置,并且永远不会自动应用任何格式

那么,有没有一种方法可以改变过去的行为?没什么简单的,我很震惊——我猜MS只是认为这是正确的行为,而旧的行为是有车的,这很难反驳。为了更接近旧的行为,您可以做一些变通方法,例如手动禁用除大括号对齐之外的所有自动格式化,但这仍会稍微改变行为


不过,我知道你期望的行为是多么令人满意。如果你认为它值得,你可以尝试在Connect上把它作为一个bug进行归档,尽管我不会给它太多被“修复”的机会——在我看来,这是一个bug的修复,而不是bug。

这将是某个地方的配置。可能相关:@EvanCarslake知道在哪里吗?@Blorgbeard我在发布自己的问题之前遇到了这个问题。那里的答案并没有解决我的问题。它在选项中,相关语言的编辑器中。但我认为,为了获得人们认为有用的少数功能而不得不放弃所有种类的东西是一个坏主意。相反,我希望有一个很好的列表,例如,如果我愿意,我可以选择使用的格式。所有的老前辈都同意,developer studio 6.0是最好的。从那以后,只有下坡路。嗯,我明白你的意思,但我不相信。我很难理解如何将取消插入的右大括号视为自动格式化,但键入时获得的所有其他基本缩进都不视为自动格式化。我一直认为,
在}上自动格式化已完成的块
的意思是“在结束正在键入的代码块时应用您设置的所有实际自动格式化规则”。此外,这个bug(如果它是bug的话)至少从2008年就出现在VisualStudio中了。为什么要现在修复它?@inlinevoid好吧,我提到的区别是——自动格式化实际上改变了输出。另一个缩进只是移动光标。当然,你不能修复没有人关心的bug——这是在浪费资源。然而,无论如何,当您重写整个代码时(我猜这与Roslyn集成等有关),您甚至可以避免那些没有人关心的bug。当然,我理解它为什么令人讨厌,但它确实更有意义(尽管我仍然认为它很愚蠢)。也许您可以编写一个简单的外接程序来处理这个问题?