ポータブル クラス ライブラリと通常の単体テスト プロジェクトの 2 つのプロジェクトがあります。ポータブル クラス ライブラリでは、NuGet を使用して Microsoft.BCL Portability pack を参照します。このパックには 2 つのアセンブリ (両方とも v1.5) が付属していSystem.Threading.Tasks.dll
ますSystem.Runtime.dll
。
ただし、単体テスト プロジェクトでこれらの同じ dll を参照しようとすると (NuGet を使用する場合と、ディレクトリを手動で参照する場合の両方)、Visual Studio は自動的にバージョン 4.5 の\packages\Microsoft.Bcl.1.0.19\lib\portable-net40+sl4+win8+wp71
別のフォルダー here 内の dll への参照をポイントします。C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\
ここで、テストする必要があるメソッドがパラメーターとして受け入れCancellationToken
られ、コンパイル エラーがスローされます。The type 'System.Threading.CancellationToken' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
その v4.5 ライブラリは、v1.5 ではなく参照されているためです。
ただし、v1.5 BCL ライブラリのこれらの機能を使用しないメソッドのテストを作成することはできました。
Visual Studio が参照ライブラリをフレームワークに付属のライブラリに置き換えるのはなぜですか? 特定のディレクトリで指定しているものだけを使用するように Visual Studio に指示するにはどうすればよいですか?
Visual Studio 2012 Update 2 を使用しています。