如何用assembly:SuppressMessage抑制迁移代码的CS8981警告?
解决CS8981警告抑制不生效的问题
你的代码抑制不生效主要有三个核心问题:
- 类别指定错误:CS8981是C#原生编译器警告,对应的类别应该是
"CSharp",而非"Microsoft.Naming"(后者属于StyleCop或旧版分析器的规则类别)。 - Target范围不匹配:你将Target指向了命名空间,但警告实际触发在
appointmenttypeassignments这个类上,需要精准指定目标实体。 - 警告编号格式冗余:
SuppressMessage仅需填写警告编号"CS8981",不需要附带后面的描述文本。
修正后的代码示例(精准抑制单个类)
[assembly: SuppressMessage( "CSharp", "CS8981", Justification = "迁移文件命名无需遵循大小写规范", Scope = "type", Target = "My.Namespace.Database.Migrations.Migrations.appointmenttypeassignments")] namespace My.Namespace.Database.Migrations.Migrations { public partial class appointmenttypeassignments : Migration { protected override void Up(MigrationBuilder migrationBuilder) { // ... } } }
批量抑制整个命名空间下的该警告
如果需要一次性屏蔽整个迁移命名空间内的CS8981警告,可以调整Scope和Target:
[assembly: SuppressMessage( "CSharp", "CS8981", Justification = "迁移文件命名无需遵循大小写规范", Scope = "namespaceanddescendants", Target = "My.Namespace.Database.Migrations.Migrations")]
补充说明:官方文档未明确标注该警告的类别,是因为它属于C#核心编译器原生警告,直接使用"CSharp"作为类别即可正常生效。
内容的提问来源于stack exchange,提问作者Anna Melashkina
相关产品推荐
相关产品推荐

