1

Windows 7インストールしたら、.NET 4.5.2.NET 4.5.2を対象とする新しい ClassLibrary プロジェクトを作成します。

にある Visual Studio 2013 にmetrics.exe同梱されている を起動して、そのアセンブリのコード メトリックを計算したいと考えています。FxCopc:\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.RuntimeSystem.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 つを削除します。

どこかが間違っていて、それを特定することはできません。

/ignoreinvalidtargetsforを使用してエラーを回避しました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

)

ありがとう。

4

0 に答える 0