C# 不应出现的代码分析警告CA2000
我有一个CA2000警告的小问题。在设置为启动项目的项目中,我收到了此警告,尽管它不应该出现 背景:我正在使用VisualStudio2010和.NET3.5中的项目。启动项目是一个WPF应用程序 在类中,应用程序如下所示: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. /// <
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
类(或同一命名空间中的另一个类)添加功能,因此此属性是否会抑制有效的警告?