Windows 7
インストールしたら、.NET 4.5.2.NET 4.5.2
を対象とする新しい ClassLibrary プロジェクトを作成します。
にある Visual Studio 2013 にmetrics.exe
同梱されている を起動して、そのアセンブリのコード メトリックを計算したいと考えています。FxCop
c:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop\
すべて正常に動作します。
私はそれから nuget System.Collections.Immutable v1.1.37
。
System.Collections.Immutable のみが参照されていることを参照で確認できます。他の依存関係 ( System.Runtime
、System.Collections
などSystem.Diagnotics.Debug
) が見つかったためです ( にあると思いますc:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\
) 。
ダミーの ImmutableArray を作成するダミーのメソッドを作成しますvar foo = new List<int>().ToImmutableArray();
すべてがコンパイルされ、正常に動作します。
メトリクスの計算を再開します。
次のエラーがあります。
metrics.exe /f:c:\dev\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll /o:toto.xml
エラー: CA0055: ファイルを読み込めませんでした: 'c:\dev\ClassLibrary1\ClassLibrary1\bin\Debug\ClassLibrary1.dll'.
アセンブリで同じコマンドを実行するとSystem.Immutable.Collections
、次のエラーが発生します。
ファイル 'c:\dev\ClassLibrary1\ClassLibrary1\bin\Debug\System.Collections.Immutable.dll' のメトリックを計算しています。フレームワーク アセンブリ 'System.Runtime、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' が見つかりませんでした。
System.Runtime
ここで、出力ディレクトリにあるファイルをコピーするとc:\Windows\Microsoft.NET\Framework\v4.0.30319\
、コード メトリックの計算が正常にClassLibrary1.dll
機能します。しかし、にあるバージョンをコピーすると、c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\
再び失敗します。
Web アプリケーションで Immutable を使用して別のライブラリをデバッグすると、「読み込まれたモジュール」に次のように表示されます。
System.Runtime.dll C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll はい いいえ シンボルの読み込みをスキップしました。544 4.06.1055.0 06/11/2015 03:49 000007FED10D0000-000007FED10D9000 [15760] w3wp.exe [4] /LM/W3SVC/2/ROOT/WebSite-2-131026947404276669
これらすべてから、 System.Collections.Immutable は System.Runtime のバージョンを使用していると思いますc:\Windows\Microsoft.NET\Framework\v4.0.30319\
そこで、「そのアセンブリへの明示的な参照を追加しよう」と考えました。もしそうなら、私は次のコンパイルエラーを受け取りました:
エラー CS1703: 同等の ID を持つ複数のアセンブリがインポートされました: 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Runtime.dll' および 'C:\Program Files (x86)\Reference Assemblies\Microsoft\ Framework.NETFramework\v4.5.2\Facades\System.Runtime.dll'. 重複する参照の 1 つを削除します。
どこかが間違っていて、それを特定することはできません。
/ignoreinvalidtargets
forを使用してエラーを回避しましたmetrics.exe
。
本当のエラーについてクラブを持っている人はいますか?
(また、.NET Framework 4 をターゲットにしてc:\Windows\Microsoft.NET\Framework\v4.0.30319\
、CopyLocal = true を使用してすべての依存アセンブリへの参照を追加しようとしました。次の警告にもかかわらず、機能します。
一部の NuGet パッケージは、現在のターゲット フレームワークとは異なるターゲット フレームワークを使用してインストールされており、再インストールが必要になる場合があります。詳細については、 http://docs.nuget.org/docs/workflows/reinstalling-packagesにアクセスしてください。影響を受けるパッケージ: System.Collections、System.Collections.Immutable、System.Diagnostics.Debug、System.Globalization、System.Linq、System.Resources.ResourceManager、System.Runtime、System.Runtime.Extensions、System.Threading
)
ありがとう。