【问题标题】:CA0001 : Member FirstOrDefault could not be found, code analysis errorCA0001 : Member FirstOrDefault 找不到,代码分析错误
【发布时间】:2012-04-25 08:10:31
【问题描述】:

在我们的一个解决方案中,在代码分析 (CA) 开启的情况下,我们收到错误:

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

查看 Internet (http://msdn.microsoft.com/en-us/library/ms245246.aspx),Microsoft 告诉我们查看 CodeAnalysisReport.xml 文件。但是在我的机器上没有这样的文件存在。

msdn 页面也告诉我们查看自定义规则,但我们没有任何自定义规则。

有人可以让我们进入正确的方向如何解决这个问题吗?或者如何获得有关 CA 这种奇怪行为的更多信息?

编辑:@2012 年 4 月 25 日 - 10:38

在调查了VS2010的输出后,我在bin/debug目录下发现了一个文件[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>

但问题仍然存在,如何解决这个问题?

【问题讨论】:

    标签: visual-studio-2010 code-analysis fxcop


    【解决方案1】:

    我最近偶然发现了这个问题,在传统的头疼之后,解决方案很有趣。重大变化是在我的项目中引用了一个自定义可移植库。这有效地在结果中带来了两组系统引用。这意味着 System.Core 被两次引用为 4.0.0.0 和 2.0.whatever。而且看起来 fxcop 不够聪明,无法处理这个问题(代码正在运行,它实际上只是验证)。

    tl;dr 检查有问题的程序集有效引用的内容。确保没有重叠复制体进入您的程序集。

    【讨论】:

      【解决方案2】:

      检查您的代码,如果程序集“[mydll].Silverlight,版本=0.0.0.1,文化=中性,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/的片段

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-21
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 1970-01-01
        • 2018-05-20
        • 1970-01-01
        相关资源
        最近更新 更多