VSTest.Console 错误:混合模式程序集是针对运行时的版本“v2.0.50727”构建的
本文关键字:版本 v2 构建 50727 运行时 错误 Console 混合 模式 程序集 VSTest | 更新日期: 2023-09-27 18:32:30
当我使用 VSTest.console 从命令行手动运行我的单元测试项目时,或者当我从 teamcity 将其作为构建步骤运行(也使用 vstest(时,我收到以下错误:
Mixed mode assembly is built against version ‘v2.0.50727′ of the runtime
一些谷歌搜索表明,这可能是由于单元测试项目引用了另一个使用"SMO"删除和创建数据库的项目。
当我从视觉工作室中运行单元测试时,它们运行良好。仅当我从命令行或 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:'...'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>
正如这里建议的那样,一切正常。
更新:
这也对我有用:
<startup useLegacyV2RuntimeActivationPolicy="true" />