Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不应出现的代码分析警告CA2000_C#_Visual Studio 2010_Code Analysis - Fatal编程技术网

C# 不应出现的代码分析警告CA2000

C# 不应出现的代码分析警告CA2000,c#,visual-studio-2010,code-analysis,C#,Visual Studio 2010,Code Analysis,我有一个CA2000警告的小问题。在设置为启动项目的项目中,我收到了此警告,尽管它不应该出现 背景:我正在使用VisualStudio2010和.NET3.5中的项目。启动项目是一个WPF应用程序 在类中,应用程序如下所示: public partial class App : System.Windows.Application { /// <summary> /// Application Entry Point. /// <

我有一个CA2000警告的小问题。在设置为启动项目的项目中,我收到了此警告,尽管它不应该出现

背景:我正在使用VisualStudio2010和.NET3.5中的项目。启动项目是一个WPF应用程序

在类中,应用程序如下所示:

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();
        }
    }
公共部分类应用程序:System.Windows.Application{
/// 
///应用程序入口点。
/// 
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
公共静态void Main(){
AutoTester.App App=新的AutoTester.App();
app.Run();
}
}
警告说:

警告1 CA2000:Microsoft。可靠性:在方法“App.Main()”中,在对象“App”上调用System.IDisposable.Dispose,然后对其进行所有引用,使其超出范围。C:\Projects\freeloper\svn\AutoTester\Application\Applications\AutoTester\obj\x86\Debug\App.g.cs 47 AutoTester

可以看到,警告出现在自动生成的App.g.cs文件中。在项目属性中,我已停用自动生成文件的代码分析。“Suppress结果来自自动生成的代码”。所以这个警告不应该出现,对吧?

现在我的问题是,我无法在本地抑制警告,因为代码将被覆盖。另外,我不想在全球范围内对此制定规则,因为我不想停用CA2000

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

致以最良好的祝愿, Christian

自动生成代码的Suppress结果”表示未显示自动生成代码的结果。Visual Studio知道只有当代码包含
GeneratedCodeAttribute
(请参阅)时,代码才由第三方生成。显然,创建代码的工具没有添加属性

您可以尝试创建应用程序的另一部分类,并将属性放在其中:

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

啊,听起来很有趣。但是,这仍然很奇怪,因为此文件是由VisualStudio创建的。这就是创建新项目(WPF应用程序)时发生的情况。我认为微软应该使用GeneratedCodeAttribute。我将尝试创建另一个WPF项目,看看会发生什么。好的,我发现了问题:如果使用.NET4.0创建WPF应用程序,它会添加生成的代码属性。但是,如果在.NET3.5中创建WPF应用程序,它不会添加该属性。这很烦人,但我对此无能为力,对吗?您创建另一个分部类的解决方案有效,谢谢!由于开发人员可能会向上面的
App
类(或同一命名空间中的另一个类)添加功能,因此此属性是否会抑制有效的警告?