2012-04-25 49 views
3

我們的解決方案之一,代碼分析(CA)開啓,我們得到如下錯誤:CA0001:會員FirstOrDefault找不到,代碼分析錯誤

CA0001 : Member 'FirstOrDefault' could not be found in type 'System.Linq.Enumerable' in assembly '[our project]'. 

尋找在互聯網上(http://msdn.microsoft.com/en-us/library/ms245246.aspx)微軟告訴我們查看CodeAnalysisReport.xml文件。但是在我的機器上沒有任何文件存在。

此外,msdn頁面告訴我們查看自定義規則,但我們沒有任何自定義規則。

有人可以讓我們進入正確的方向如何解決這個問題嗎?或者如何獲得有關CA的這種奇怪行爲的更多信息?

編輯:@ 2012年4月25日 - 10:38

後VS2010的輸出的一些調查,我發現了一個文件[MYDLL] .CodeAnalysisLog.xml在bin/debug目錄。有更詳細的錯誤:

<Exception Keyword="CA0001" Kind="AssemblyLoad"> 
    <Type>Microsoft.FxCop.Common.AssemblyLoadException</Type> 
    <ExceptionMessage>Member 'FirstOrDefault' could not be found in type 'System.Linq.Enumerable' in assembly 'Prodigy.UI.Modules.SecurityDesigner.Silverlight, Version=0.0.0.1, Culture=neutral, PublicKeyToken=fdb1b3fc35f0c32e'.</ExceptionMessage> 
    <StackTrace> at Microsoft.FxCop.Engines.Phoenix.LoadAndResolutionHandler.HandleFailureToFindMatch(ModuleUnit unit, String memberName, Type memberType, String className, UInt32 memberRefToken, UInt32 classToken) 
    at Phx.Metadata.ReaderImplementation.GetExternalDefinitionMemberSymbolHelper(UInt32 memberToken, String name, Byte* signature, Symbol parentSymbol, Symbol originalParentSymbol) 
    at Phx.Metadata.ReaderImplementation.GetExternalDefinitionMemberSymbolHelper(UInt32 memberToken, String name, Byte* signature, Symbol parentSymbol, Symbol originalParentSymbol) 
    at Phx.Metadata.LoaderImplementation.GetExternalDefinitionMemberSymbol(UInt32 memberToken) 
    at Phx.Metadata.LoaderImplementation.GetMemberReferenceSymbol(UInt32 memberReferenceToken) 
    at Phx.Metadata.MetadataLoader.LoadMemberReferences(AssemblyUnit unit) 
    at Microsoft.FxCop.Engines.Phoenix.AssemblyLoader.LoadAssembly(String filePath) 
    at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.AnalyzeInternal() 
    at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Analyze() 
    at Microsoft.FxCop.Common.EngineManager.Analyze(Project project, Boolean verboseOutput)</StackTrace> 
    </Exception> 

但仍然問題仍然存在,如何解決這個問題?

回答

0

我最近偶然發現了這個問題,經過傳統的糾結後,解決方案非常有趣。重大更改引用了我項目中的自定義便攜式庫。這有效地在結果中引入了兩組系統引用。含義System.Core被引用兩次爲4.0.0.0和2.0.whatever。看起來像fxcop不夠聰明來處理(代碼工作,它只是驗證)。

tl; dr檢查您的問題組裝有效引用了什麼。確保沒有重疊副本已經進入你的程序集。