2011-02-15 87 views
3

我有一個CA2000警告的小問題。在我設置爲啓動項目的項目中,我收到了這個警告,儘管它不應該發生。代碼分析警告CA2000不應該出現

背景:我在Visual Studio 2010中使用.NET 3.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(); 
     } 
    } 

警告說:

警告1個CA2000:Microsoft.Reliability:在方法 'App.Main()',叫了System.IDisposable。在所有對它的引用超出範圍之前,在對象'app'上處理。 C:\ Projects \ Freelance \ svn \ AutoTester \ Application \ Applications \ AutoTester \ obj \ x86 \ Debug \ App.g.cs 47 AutoTester

可以看到,警告發生在App.g.cs中是一個自動生成的文件。在項目屬性中,我已經停用了自動生成文件的代碼分析。 「從自動生成的代碼中獲得結果」。因此,這個警告不應該發生,對吧?

現在我的問題是,我不能在本地壓制警告,因爲代碼將被重寫。另外,我不想在全球範圍內製定規則,因爲我不想停用CA2000。

有沒有人遇到類似的問題或任何想法這裏怎麼了?

祝, 基督教

回答

2

「從自動生成的代碼剿結果」表示從代碼的結果是自動生成的未示出。 Visual Studio知道代碼僅在第三方包含GeneratedCodeAttribute(請參閱here)時生成。通常,創建代碼的工具不會添加該屬性。

你可以嘗試讓另一部分類應用程序,並把屬性有:

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

啊聽起來很有趣。然而,這個文件是由VisualStudio創建的,這仍然很奇怪。這是當你創建一個新的項目(WPF應用程序)時會發生什麼。我認爲微軟應該使用GeneratedCodeAttribute。我將嘗試創建另一個WPF項目並查看會發生什麼。 – Christian 2011-02-15 09:40:15

相關問題