这在Visual Studio 2019中开始发生,但2017年没有发生。我无法弄清楚如何阻止它。
我一直在做的事情是利用Resharper的重新格式化。假设我有这样的代码块:
Scan = scan;
Target = target;
IsDone = true;
ShouldAlign = false;
我想把它调整起来,看起来很漂亮。所以我选择了我的代码块,我使用菜单或键盘快捷键来调用Resharper的autoformat来排列等号。瞧!看起来很棒,这是重新格式化的代码,就像它重新格式化后一样。请注意仍然选择代码:
但是我要做的就是点击那个文档的空白处的其他地方,然后轰!一切都没有了
就好像当我点击它时VS2019运行自己的“格式选择”命令但是我从未这样做过。 (但如果我手动做,它会产生同样的效果)
但是,如果不是单击我的空白,而是单击Visual Studio的菜单区域,然后单击文档空白,没问题。没有重新格式化。
刚才我刚刚将Visual Studio 2017和2019编辑设置并排相邻。我已经比较了我可能找到的每一个编辑/格式/间距设置。 Visual Studio和Resharper都是。它们是完全相同的,除了VS 2019有一些2017年没有的新设置的少数情况。
即使所有VS2019的“自动格式化”设置都关闭,这仍然会发生
我问的是Resharper人的问题,但我认为这与两者的相互作用有关。
还有其他人看到过这样的东西吗?这让我疯了。
经过几个小时,我终于发现这个问题既不是Visual Studio也不是Resharper。它实际上是我使用的一个第三个扩展(也很常见),用于称为Visual Assist的C ++文件。
VA有自己的“粘贴后格式”选项。我猜它必须检测重新格式化/点击离开作为“粘贴”操作,并根据Visual Studio的设置重新格式化它。
一旦我在单一的Visual Assist选项VS2019中禁用了它(就像我在2017年显然已经拥有的那样)一切都运行良好。