我遇到一个CA2000警告的小问题。在我设置为启动项目的项目中,我收到此警告,但不应该发生。
背景:我在Visual Studio 2010中使用.NET 3.5中的项目。启动项目是一个WPF应用程序。
在App类中看起来如下:
public partial class App : System.Windows.Application {
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
AutoTester.App app = new AutoTester.App();
app.Run();
}
}
警告说:
警告1 CA2000:Microsoft.Reliability:在方法'App.Main()'中,在对所有引用超出范围之前,在对象'app'上调用System.IDisposable.Dispose。 C:\ Projects \ Freelance \ svn \ AutoTester \ Application \ Applications \ AutoTester \ obj \ x86 \ Debug \ App.g.cs 47 AutoTester
可以看出,警告发生在App.g.cs中,这是一个自动生成的文件。在项目属性中,我已停用自动生成文件的代码分析。 “自动生成代码的结果”。因此,这个警告不应该发生,对吧?
现在我的问题是,我无法在本地禁止警告,因为代码将被覆盖。此外,我不想为全局制定规则,因为我不想停用CA2000。
有没有人遇到类似的问题,或者知道这里出了什么问题?
祝福, 基督教
答案 0 :(得分:2)
“自动生成代码的抑制结果”表示未显示自动生成的代码的结果。 Visual Studio知道代码仅在第三方包含GeneratedCodeAttribute
时生成(请参阅here)。实际上,创建代码的工具没有添加属性。
您可以尝试创建另一个部分App,并将属性放在那里:
[GeneratedCode("CodeGenerator", "1.0.0.0")]
public partial class App
{
}