【问题标题】:Disable code formatting for specific block of code in Visual Studio在 Visual Studio 中禁用特定代码块的代码格式
【发布时间】:2019-07-17 20:42:03
【问题描述】:

如何在 Visual Studio 2017 (C# 7) 中禁用代码格式化

我有这个方法:

public CarViewModel(ICarsRepo carsRepo)
{
    ...

    Manufacturers = ToSelectList<Manufacturer>();
    Categories = ToSelectList<Category>();
    States = ToSelectList<State>();
}

我想这样格式化:

public CarViewModel(ICarsRepo carsRepo)
{
    ...

    Manufacturers   = ToSelectList<Manufacturer>();
    Categories      = ToSelectList<Category>();
    States          = ToSelectList<State>();
}

但是当我按下 Ctrl K + Ctrl D 时,它又回到了原来的样子。

#region灵感

我想要一些东西来包装特定的代码块,比如 #region:

public CarViewModel(ICarsRepo carsRepo)
{
    ...

    #region disable_format

    Manufacturers   = ToSelectList<Manufacturer>();
    Categories      = ToSelectList<Category>();
    States          = ToSelectList<State>();

    #endregion
}

#pragma灵感

或者不一定是region,也许是pragma,就像这段代码sn-p中使用的那样:

            var parameter = 0;
            var sqlCommand = $"{parameter}";
#pragma warning disable EF1000 // Possible SQL injection vulnerability.
            this.Database.ExecuteSqlCommand(sqlCommand);
#pragma warning restore EF1000 // Possible SQL injection vulnerability.

这更像是一种审美偏好,大多数开发人员可能并不认同,但我不时在我的代码中非常喜欢这种偏好。

【问题讨论】:

    标签: c# visual-studio code-formatting


    【解决方案1】:
    • Visual Studio (reference)

      • 禁用格式化:#pragma warning disable format
      • 启用格式化:#pragma warning restore format
          switch (number) {
      #pragma warning disable format
              case 1:    cardinal = "one";     animal = "monkey";     break;
              case 2:    cardinal = "two";     animal = "horse";      break;
              case 3:    cardinal = "three";   animal = "pig";        break;
              case 4:    cardinal = "four";    animal = "chicken";    break;
      #pragma warning restore format
          }
      
      
    • 骑士 (doc)

      • 禁用格式化:// @formatter:off
      • 启用格式化:// @formatter:on
          switch (number) {
              // @formatter:off
              case 1:    cardinal = "one";     animal = "monkey";     break;
              case 2:    cardinal = "two";     animal = "horse";      break;
              case 3:    cardinal = "three";   animal = "pig";        break;
              case 4:    cardinal = "four";    animal = "chicken";    break;
              // @formatter:on
          }
      
    • 合并

          switch (number) {
      #pragma warning disable format // @formatter:off
              case 1:    cardinal = "one";     animal = "monkey";     break;
              case 2:    cardinal = "two";     animal = "horse";      break;
              case 3:    cardinal = "three";   animal = "pig";        break;
              case 4:    cardinal = "four";    animal = "chicken";    break;
      #pragma warning restore format // @formatter:on
          }
      

    【讨论】:

      【解决方案2】:

      这不仅会禁用格式化块,还会阻止 Visual Studio 格式化您的任何声明语句。

      【讨论】:

        【解决方案3】:

        这符合您的需要。不仅是 C#,还适用于任何语言。

        Manufacturers/**/= ToSelectList<Manufacturer>();
        Categories/*   */= ToSelectList<Category>();
        States/*       */= ToSelectList<State>();
        

        【讨论】:

        • 不是它需要,但我看不出它对 VB 是如何工作的,甚至用“''”代替“/* */”。
        猜你喜欢
        • 2013-12-04
        • 2019-08-17
        • 2019-03-10
        • 2011-05-17
        • 1970-01-01
        • 2019-04-14
        • 1970-01-01
        • 2018-10-27
        • 2023-03-17
        相关资源
        最近更新 更多