VSTest.Console错误:混合模式程序集是针对运行时的版本“v2.0.50727”构建的

时间:2016-01-30 14:35:45

标签: c# visual-studio-2013 smo vstest

当我使用VSTest.Console从命令行手动运行我的单元测试项目时,或者当我从teamcity(也使用vstest)运行它作为构建步骤时,我收到以下错误:

Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime

一些谷歌搜索表明,这可能是因为单元测试项目引用了另一个使用' SMO'用于删除和创建数据库。

当我从visual studio中运行它们时,单元测试运行正常。只有从命令行或从TeamCity运行它们时才会出现错误。 stackoverflow上的所有相关问题都表明应将以下内容添加到配置文件中:

    

但是,我不知道哪个配置文件。我已经尝试将其添加到app.config文件(我手动复制到bin目录),但这没有任何区别。 visual studio使用的配置文件具有正确的启动属性(这解释了我从Visual Studio运行测试时它的工作原理)

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.x86.exe.config (32-bit)

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.exe.config (64-bit)

请帮忙!我该如何告诉VSTest" useLegacyV2RuntimeActivationPolicy =" true""?

1 个答案:

答案 0 :(得分:0)

结果很简单。我用来从命令行执行测试的命令是:

C:\...\TestProject> VSTest.Console \bin\Release\TestProject.dll

在这种情况下,调用可执行文件是:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe

在同一文件夹中有相应的.config文件vstest.console.exe.config。我补充说:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  <requiredRuntime version="v4.0.20506" />
</startup>

建议here,一切正常。

更新

这对我也有用:

<startup useLegacyV2RuntimeActivationPolicy="true" />