我有 2 个项目,一个可移植类库和一个常规单元测试项目。在 Portable 类库中,我使用 NuGet 来引用 Microsoft.BCL Portability 包,它带有 2 个程序集(System.Threading.Tasks.dll
并且System.Runtime.dll
都是 v1.5)。
但是,当我尝试在我的单元测试项目中引用这些相同的 dll(使用 NuGet 并手动浏览到目录\packages\Microsoft.Bcl.1.0.19\lib\portable-net40+sl4+win8+wp71
)时,Visual Studio 会自动将引用指向位于此处的另一个文件夹中的 dll,该文件夹C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\
的版本为 4.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 2012 更新 2。