如何摆脱Visual Studio中的命名规则冲突消息?


94

我刚刚安装了Visual Studio2017。打开现有网站时,会收到各种各样的警告消息,例如:

IDE1006违反命名规则:这些单词必须以大写字母开头:swe_calc

在代码中,其定义为:

[System.Runtime.InteropServices.DllImport("swedll32.dll")]
public static extern Int32 swe_calc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

我的ASP.Net控件也会发生这种情况。作为DropDownList的示例:

IDE1006违反命名规则:这些单词必须以大写字母开头:ddlMonth_SelectedIndexChanged

如何在Visual Studio中消除这些类型的警告?


7
一定要将此反馈提交给VS。2017年是具有新功能的新版本,有时这些功能起初可能过于激进。您的反馈将有助于调整默认行为。
吉米

3
听起来像个虫子。这不仅涉及旧项目,而且还涉及在VS2017rc中创建的新项目。VS创建控件的名称是的话..标志作为进攻
TAW

3
我在使用MSVS生成的按钮单击处理程序“ btnList_Click()”时遇到此1006错误。换句话说,MSVS2017抱怨它自己创建了一个方法!它突然抱怨自.Net 1.0起就存在的命名约定!叹气..理想解决方案:#pragma warning disable IDE1006。这样做的好处是,由于它在源代码中,因此会自动在整个项目范围内运行(您不必同步任何每个工作站的MSVS设置)。
paulsm4

Answers:


140

它是一项新的可配置功能,如果您要转到

选项→文本编辑器→您的语言(我使用C#)→代码样式→命名

在那儿,我去了Manage Styles添加骆驼盒(在那儿,但是您需要将它添加到您的可选盒中):转到“ +”号,然后相应地添加您的规则。

重要提示:关闭解决方案,然后重新打开以使更改生效。

例如,我只将骆驼保护套用于私有方法。因此,我选择了“私有方法”并要求为我创建的“骆驼式保护套”设置新样式,并将其设置为“严重性建议”(我也将其提升到顶部)。

内置也是“建议”,因此您也可以关闭“消息”。


2
这与我们用于私有方法的命名约定完全相同-谢谢!现在我只需要找出如何启用此给大家,而不必单独设置该选项的人....
马修·沃森

9
快速获得这些选项的方法是单击“快速操作”灯泡,将鼠标悬停在“固定名称冲突”上,然后单击“更改样式选项”按钮。
Daren

5
我刚刚删除了规则
Paulustrious

2
要与整个团队分享这样的设置/规则/样式,请参阅本:stackoverflow.com/questions/11684457/...
kmote

5
在Visual Studio 2019版本中,整个命名功能似乎已被修复并且无法正常工作。
gpresland

27

如果只想在某些文件或区域中禁止显示,则可以使用以下命令:

#pragma warning disable IDE1006

// the code with the warning

#pragma warning restore IDE1006

2
这可能是“理想”的解决方案!它为整个团队解决了问题。
paulsm4

24

如果您需要摆脱这些消息,您还可以隐藏它们。

在此处输入图片说明


1
将它们“在源中”与“在文件中”抑制起来有什么区别?
TylerH '19

3
@TylerH“源中”是在其中引发警告的文件。“在抑制文件中”是一个生成的文件,用于存储所有警告。
MistaGoustan

14

您可以重命名该方法,然后使用属性将该名称添加到EntryPoint属性。

[System.Runtime.InteropServices.DllImport("swedll32.dll", EntryPoint = "swe_calc")]
public static extern Int32 SweCalc(double tjd, int ipl, Int32 iflag, IntPtr xx, IntPtr serr);

我也有一个提供相同错误的下拉框:'ddlMonth_SelectedIndexChanged'。我所有的asp.net控件也都必须重命名吗?
SteveFerg '16

@SteveFerg由您决定-这只是一个警告。
丹尼尔·A·怀特

1
我想了很多。我只是想知道是否有某个选项可以关闭它们,而不是“单击”错误列表中的“消息”框。
SteveFerg '16

5

如果要在方法中省略或取消警告消息,可以使用命名空间System.Diagnostics.CodeAnalysis中SuppressMessage

[SuppressMessage("Microsoft.Design", "IDE1006", Justification = "Rule violation aceppted due blah blah..")]

理由属性是可选的,但它是值得花了一会儿写一个理由,让你的团队知道这些代码被修改,就可以了。


2

如果将鼠标悬停在违反命名规则的地方,则可以使用Alt + Enter来显示该语言的命名样式。您也可以使用工具->选项->文本编辑器-> {语言}->代码样式->命名。

对于“方法”上的camelCase规则,您可以添加一个新规则并将其设置为Camel Case。当您关闭代码文件并再次打开它时,您应该不再看到该警告。不知道为什么这不是默认选项,但就我而言不是(使用Visual Code 15.8)。我必须编辑样式以符合我们公司的标准。

示例C#命名样式设置


2

这可以通过使用.editorconfig命名文件的常规VS2017和VS2019使用设置文件来完成:https : //docs.microsoft.com/zh-cn/visualstudio/ide/editorconfig-code-style-settings-reference

可以手动创建文件,或者在VS2019中,您可以通过按以下方式使Visual Studio根据您的喜好为您创建文件(即,按照https://stackoverflow.com/a/41131563/131701中的说明配置首选项后)通过设置按钮生成编辑器配置文件。

从设置按钮生成编辑器配置文件

例如,以下规则集将为所有非公共方法启用camelCase,并保留VS随附的其他默认命名规则。

#### Naming styles ####

# Naming rules

dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i

dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case

dotnet_naming_rule.private_method_should_be_camelcasestyle.severity = suggestion
dotnet_naming_rule.private_method_should_be_camelcasestyle.symbols = private_method
dotnet_naming_rule.private_method_should_be_camelcasestyle.style = camelcasestyle

dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case

# Symbol specifications

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.interface.required_modifiers = 

dotnet_naming_symbols.private_method.applicable_kinds = method
dotnet_naming_symbols.private_method.applicable_accessibilities = private, protected, internal, protected_internal
dotnet_naming_symbols.private_method.required_modifiers = 

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.types.required_modifiers = 

dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal
dotnet_naming_symbols.non_field_members.required_modifiers = 

# Naming styles

dotnet_naming_style.pascal_case.required_prefix = 
dotnet_naming_style.pascal_case.required_suffix = 
dotnet_naming_style.pascal_case.word_separator = 
dotnet_naming_style.pascal_case.capitalization = pascal_case

dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix = 
dotnet_naming_style.begins_with_i.word_separator = 
dotnet_naming_style.begins_with_i.capitalization = pascal_case

dotnet_naming_style.camelcasestyle.required_prefix = 
dotnet_naming_style.camelcasestyle.required_suffix = 
dotnet_naming_style.camelcasestyle.word_separator = 
dotnet_naming_style.camelcasestyle.capitalization = camel_case

0

禁用规则。右键单击错误消息,然后选择严重性为“无”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.