将 .Net 3.5 升级到 .Net4:MSTEST 单元测试失败并显示令人费解的消息

Upgrading .Net 3.5 to .Net4: MSTEST unit tests fail with puzzling message

在迁移到 VS2013/.Net4.5 之前,我正在将 VS 解决方案从 .Net 3.5 升级到 .Net 4 (VS2008 - VS2010)。但是我的大部分单元测试现在都失败了。

所有测试 class 具有

的测试
private TestContext tci;

/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
    get
    {
        return tci;
    }
    set
    {
        tci = value;
    }
}

已定义(并且在 VS2008 环境中全部通过)现在在 VS2010 中失败并显示此错误:

  Failed    GetValueOrDefault_ValidType_ConvertsResult  Autoscribe.Utility.Test Unable to set TestContext property for the class Autoscribe.Utility.Test.ExtensionMethodsTest. Error: System.ArgumentException: Object of type 'Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext' cannot be converted to type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'..

我已确保在 VS2010 中测试项目都引用了正确版本的单元测试工具,即

   C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

但是这个错误让我很困惑。

谁能告诉我哪里出了问题?看起来 TestContext 的性质发生了变化,但它仍然是样板代码,所以我很困惑。

我通过删除对 VS2010 单元测试工具的所有引用解决了这个问题

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

并将它们替换为对 VS2012 工具的引用

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

我也刚好安装了。奇怪的是 VS2012 dll 应该可以解决问题,但它确实有效。