3

私たちのソリューションの 1 つで、コード分析 (CA) をオンにすると、次のエラーが発生します。

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 の出力を調査した結果、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>

しかし、まだ問題が残っています。これを修正するにはどうすればよいですか?

4

2 に答える 2

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/からのスニペット

于 2013-02-28T10:32:14.763 に答える
0

私は最近、この問題に出くわしました。重大な変更は、私のプロジェクトでカスタム ポータブル ライブラリを参照することでした。これにより、結果に 2 セットのシステム参照が効果的にもたらされました。つまり、System.Core は 4.0.0.0 と 2.0.whatever として 2 回参照されました。そして、fxcop はそれを処理するほどスマートではないようです (コードは機能していましたが、実際には検証のみです)。

tl;dr問題のあるアセンブリによって効果的に参照されているものを確認してください。重複した複製物がアセンブリに作成されていないことを確認してください。

于 2013-02-21T13:49:16.700 に答える