代码分析警告CA2000哪个不应该发生

时间:2011-02-15 09:05:07

标签: c# visual-studio-2010 code-analysis

我遇到一个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。

有没有人遇到类似的问题,或者知道这里出了什么问题?

祝福, 基督教

1 个答案:

答案 0 :(得分:2)

“自动生成代码的抑制结果”表示未显示自动生成的代码的结果。 Visual Studio知道代码仅在第三方包含GeneratedCodeAttribute时生成(请参阅here)。实际上,创建代码的工具没有添加属性。

您可以尝试创建另一个部分App,并将属性放在那里:

[GeneratedCode("CodeGenerator", "1.0.0.0")]
public partial class App 
{
}