【问题标题】:VSTest.Console error: Mixed mode assembly is built against version ‘v2.0.50727′ of the runtimeVSTest.Console 错误:混合模式程序集是针对运行时版本“v2.0.50727”构建的
【发布时间】:2016-05-08 06:45:07
【问题描述】:

当我使用 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"”?

【问题讨论】:

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


    【解决方案1】:

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

    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" />
    

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 2013-01-26
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多