【问题标题】:How to prevent Visual Studio from formatting specific code?如何防止 Visual Studio 格式化特定代码?
【发布时间】:2020-12-09 22:09:41
【问题描述】:

我在下面输入代码:

if (rows == 0) break;

当我在末尾添加分号时,VS 立即生效并将其转换为:

if (rows == 0) 
    break;

if (rows = 0) return; 和其他一些构造也会发生同样的情况。

如何防止 VS 格式化这个特定的代码交互,而不会弄乱它提供的所有其他细节?我查看了工具/选项/文本编辑器/C#/代码样式/格式,但没有看到任何明显的东西。

【问题讨论】:

  • 您是否尝试过在文本编辑器中关闭“漂亮的代码列表(重新格式化)”?
  • 我想你想要这个设置,csharp_preserve_single_line_blocks = true。看起来可以通过 EditorConfig 文件进行配置。 Code style rule options
  • 其实是csharp_preserve_single_line_statements = true。我都试过了,这就是影响这个特定案例的那个。
  • 我同意 Olivier Rogier 的观点,他为您指明了正确的方向。另外,Automatically format statement on;这个选项也会影响这个场景中的格式语句(工具>选项>文本编辑器>C#>代码样式>格式化>常规),但是请注意,这个选项在Leave statements and member declarations on the same line选项没有被勾选的情况下有效。

标签: c# visual-studio visual-studio-2019


【解决方案1】:

您可以在主菜单中启用 VS 选项:

工具 > 选项 > 文本编辑器 > C# > 代码样式 > 格式化 > 换行 >

将语句和成员声明放在同一行

相同选项对话框的英文版(VS2017版):

【讨论】:

    【解决方案2】:

    您添加了 pragam waning 禁用设置,因此当您执行 Ctr+K+D 时,它不会格式化或您可能用于格式化的任何快捷键。

    #pragma warning disable format
    public class Item
    {
          public string Prop1 { get; set; } 
        public string Prop2 { get; set; }
    } 
    #pragma warning disable format
    

    【讨论】:

    • 这是对保护特定代码不被重新格式化的问题标题的一个很好的答案,但听起来 OP 希望根据特定的格式化操作而不是特定的代码块来控制它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2021-06-10
    • 2018-05-08
    • 2011-02-22
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多