我的背景:我的文件中有很多行会引起此警告(由于阵列大小相同,因此该特定警告对我而言毫无意义)。
为了排除一些晦涩的项目设置,我创建了一个简单的玩具示例。在这里,我使用规则集“ Microsoft All Rules”。以下仍然给我警告,包括CA1814:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
#pragma warning disable 1814
var test = new int[0,0,0];
var b = new Banana();
#pragma warning restore 1814
return;
}
}
class Banana : IDisposable
{
public void Dispose()
{
Console.WriteLine("What a waste");
}
}
}
我不确定这是否有某种联系,但是即使存在所有这些错误,我也可以使用警告级别:4,将警告视为错误:“全部”来构建项目。
编辑:我也尝试了CA1814,而不只是1814
答案 0 :(得分:1)
CS1814本身不是编译器警告;这是一个代码分析警告。您已在项目上启用了静态代码分析,并选择了所有规则。不过,您可能并不愿意关注所有这些内容,而这正是您所要面对的。
您可能想要自定义规则集。您可以通过以下两种方式之一进行操作:
对于第一种方法,将以下属性添加到文件或方法的顶部:
[SuppressMessage("Microsoft.Performance", "CA1814:PreferJaggedArraysOverMultidimensional")]