Visual Studio 2012单元测试尝试加载旧版本的程序集

时间:2012-11-02 19:42:22

标签: visual-studio-2012 mstest windows-phone-8

我似乎无法进行任何单元测试。所有错误都遵循以下几行:

    Test method TvQueue.UnitTesting.TheTvDb.TheTvDbServiceTest.GetShowbasicTest threw exception: 
System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=2.0.6.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.=== Pre-bind state information ===
LOG: User = JKRTABLET\Jan
LOG: DisplayName = System.Windows, Version=2.0.6.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Jan/Documents/Visual Studio 2012/Projects/TvQueue/TvQueue.UnitTesting/bin/Debug
LOG: Initial PrivatePath = NULL
Calling assembly : TvQueue.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files (x86)\JetBrains\ReSharper\v7.0\Bin\JetBrains.ReSharper.TaskRunner.CLR4.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: System.Windows, Version=2.0.6.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
LOG: Attempting download of new URL file:///C:/Users/Jan/Documents/Visual Studio 2012/Projects/TvQueue/TvQueue.UnitTesting/bin/Debug/System.Windows.DLL.
LOG: Attempting download of new URL file:///C:/Users/Jan/Documents/Visual Studio 2012/Projects/TvQueue/TvQueue.UnitTesting/bin/Debug/System.Windows/System.Windows.DLL.
LOG: Attempting download of new URL file:///C:/Users/Jan/Documents/Visual Studio 2012/Projects/TvQueue/TvQueue.UnitTesting/bin/Debug/System.Windows.EXE.
LOG: Attempting download of new URL file:///C:/Users/Jan/Documents/Visual Studio 2012/Projects/TvQueue/TvQueue.UnitTesting/bin/Debug/System.Windows/System.Windows.EXE.

    at TvQueue.Data.TheTvDb.TheTvDbService.<GetShow>d__8.MoveNext()
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start(ref TStateMachine stateMachine)
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start(ref TStateMachine stateMachine)
   at TvQueue.Data.TheTvDb.TheTvDbService.GetShow(Int64 theTvDbId)
   at TvQueue.UnitTesting.TheTvDb.TheTvDbServiceTest.<GetShowbasicTest>d__0.MoveNext() in TheTvDbServiceTest.cs: line 19
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()

开发Windows Phone 8代码时出现此问题。出于某种原因,MSTest想要加载旧版本的程序集(项目中实际引用的程序集是4.x或更高版本,MSTest想要加载2.x版本)。

我怀疑这是一个配置问题,但我不知道如何修复它。

感谢您提供帮助。

1 个答案:

答案 0 :(得分:2)

请在How to use MSTest in VS2010 for Windows Phone 8 applications

上查看我的回答
  

项目中实际引用的程序集是4.x或更高

System.Windows, Version=2.0.6.0不是旧版本,它是正确的新版本。并且你实际上看不到各个组件的版本号,没有单个组件这样的东西。

请记住,主要的变化是Windows Phone 8(如Windows RT)不再使用直接程序集,而是使用WinMD文件将多个程序集编译为单个API。