2012-04-25 2 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를) Microsoft는 CodeAnalysisReport.xml 파일을 살펴 보라고합니다. 하지만 내 컴퓨터 어디에도 파일이 없습니다.

또한 msdn 페이지는 맞춤 규칙을 살펴 보라고 지시하지만 맞춤 규칙은 없습니다.

이 문제를 해결할 수있는 방법을 알려주세요. 또는 CA의 이상한 동작에 대한 정보를 얻는 방법은 무엇입니까?

편집 : 월 2012 @ 25 -

10시 38분 VS2010의 출력의 일부 조사 후, 나는 빈/디버그 디렉토리에 파일 [mydll] .CodeAnalysisLog.xml을 발견했다. 거기에 오류가 더 구체적으로 지정되었습니다 :

<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 문제가있는 조립품이 무엇을 참조하는지 확인하십시오. 어셈블리에 복제자가 중복되지 않았는지 확인하십시오.

0

'[mydll] .Silverlight, Version = 0.0.0.1, Culture = neutral, PublicKeyToken = fdb1b3fc35f0c32e'어셈블리의 'System.Linq.Enumerable'형식의 'FirstOrDefault'멤버에 코드가 있는지 확인하십시오.

오류 설명을 통해 [mydll] .Silerlight.dll 어셈블리에 "System.Linq.Enumerable"클래스가있는 것 같습니다. 맞습니까?

발췌 문장 http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/c2165692-67ea-4b4a-b730-52f4b4ff0313/