Temporary possible solution for “Leave block on single line” not working in Visual Studio 2022
记录自己的暂时办法。
如果有读者有解决办法还希望能告诉我,非常感谢!!!
结论:可能是 bug,貌似还是 rider 好使?
问题现象
// 写自动属性的时候,出现问题
// 使用 prop 代码片段也是如此,在应用智能提示的时候也出现格式错误
public string Name
{
get; // 自动换行
set;
}
// 我需要的正常情况
public string Name { get; set; }
甚至会对正常情况,编译器报告 IDE0055 修正。
或者在书写左大括号 ( “{” ) 时,会自动补全大括号并放到单独的新行。
描述
在网上也有一些办法,例如重置用户设置,删除用户设置,卸载重装,删除所有插件都不行。
最有趣的是,之前一直都没问题,过了几个月没有用它,后来就不行了。在此期间我也只新增过的代码工具也只有 Jetbrains Toolbox,总不能是它悄悄改了吧。
VS IDE 中,”工具“ -> ”选项“ -> ”文本编辑器“ -> ”c#“ -> ”代码样式“ -> ”格式设置“ -> ”换行“ 有明确的选项:”将块保留在一行上“。但即使选中也毫无作用。
实际上我感觉文本编辑器里的所有设置貌似都失效了,也不知道是哪里的干扰。
而且我发现中文的 IDE 选中”将块保留在一行上“后,把 IDE 的语言切换到英语,相同的内容 “Leave block on single line” 却没有被选中。(全局设置在哪里改?)
临时解决办法
- 手动生成
.editorconfig
文件,如下图,在【代码样式】这里点击【基于设置生成.editorconfig
文件】。
有意思的是,明明只是生成文件,什么都没动,只要 IDE 使用了它就没问题,但删除它立马就不行了。
.editorconfig
文件里的csharp_preserve_single_line_blocks = true
确实有效,把值改为false
保存后使用prop
快捷生成的属性立马就改了我不需要的格式,改回true
立马又变回我需要的格式了。
过程记录
后话
改用 rider 了,我看里面的代码样式貌似蛮详细,里面的格式设置是:如果在单行时,这个就蛮不错的。就是没有 Package Manager Console
,学习写 EF Core 时候写命令还有点不方便。