在 Visual Studio 中禁用特定代码块的代码格式
Posted
技术标签:
【中文标题】在 Visual Studio 中禁用特定代码块的代码格式【英文标题】:Disable code formatting for specific block of code in 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.
这更像是一种审美偏好,大多数开发人员可能并不认同,但我不时在我的代码中非常喜欢这种偏好。
【问题讨论】:
【参考方案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 是如何工作的,甚至用“''”代替“/* */”。以上是关于在 Visual Studio 中禁用特定代码块的代码格式的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code:禁用特定文件类型的错误/警告签入
在 Razor 中禁用 Visual Studio 代码格式
如何在 Visual Studio 2015 中禁用 C# 6 支持?
如何在 Visual Studio 2017 上禁用代码分析?