在Visual Studio中禁用特定代码块的代码格式化

15

我该如何在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

            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.

这更多是审美偏好,可能大多数开发人员不会分享,但有时我很喜欢在我的代码中使用它。

3个回答

25
  • 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
        }
    
    
  • Rider (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
        }
    
  • Combined

        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
        }
    

3

这符合您的需求。不仅适用于C#,而且适用于任何语言。

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

虽然不需要,但我无法看出这对VB有什么作用,即使将“''”替换为“/* */”。 - SteveCinq

2
这不仅禁用了一块格式,还阻止了Visual Studio对你的声明语句进行任何格式化。"最初的回答"。

进入图像描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接