混合模式程序集是针对“v2.0.50727”错误构建的
Posted
技术标签:
【中文标题】混合模式程序集是针对“v2.0.50727”错误构建的【英文标题】:Mixed mode assembly is built against 'v2.0.50727' error 【发布时间】:2013-01-26 17:28:15 【问题描述】:首先,我在 *** here 上找到了其他帖子,但它并没有解决我的错误。
我有 3 个不同的环境/域,每个位置都有一个构建服务器。我的 Dev 和 UAT 环境构建得很好,但生产版本不起作用。
我收到了错误
混合模式程序集是针对版本“v2.0.50727”构建的 运行时并且不能在没有额外的 4.0 运行时加载 配置信息
我已将此标签添加到我的 app.config 文件中(这是我上面链接中建议的修复)
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
我的构建服务器/环境/域之间还有哪些可能会导致此问题的不同之处?
在回答艾伦的问题时,我相信这就是您要问的:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>D3D87C05-2811-489B-9F0D-7676B6485AA0</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MVST.Batch.CorrespondenceConversion</RootNamespace>
<AssemblyName>MVST.Batch.CorrespondenceConversion</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
我还有 100 多个其他项目,它们的设置方式完全相同,并且构建良好。
【问题讨论】:
.Net 4.0 是否安装在生产环境中? 是的,我显示在 C:\Windows\Microsoft.NET\Framework 文件夹以及 Framework64 文件夹中都有 v4.0.30319 您的混合模式程序集需要哪个版本的平台工具集,并且该版本是否存在于 prod 服务器上? allen 我更新了我的问题,回复了你的问题,如果我理解正确的话...... 等等,你是说它不在生产机器上构建或运行?您的配置显示 .Net 3.5 版 【参考方案1】:http://support.microsoft.com/kb/2572158
将下面的措辞 useLegacyV2RuntimeActivationPolicy="true"
添加到以下任一位置:
-
sgen.exe.config 文件位于以下位置:..\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\
应用程序的 app.config 文件
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
【讨论】:
我将上述属性添加到我的 app.config 中,一切正常。 我只想指出,需要的部分是:useLegacyV2RuntimeActivationPolicy="true"【参考方案2】:如果您在 64 位中运行,您可能需要将其添加到 Visual Studio 测试引擎配置中:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine.exe.config
像这样添加启动节点:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<requiredRuntime version="v4.0.20506" />
</startup>
【讨论】:
【参考方案3】:这是有效的修复...仍然不确定为什么我的项目需要 2.0 而其他项目(在我问题的链接中)需要 4.0。
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
【讨论】:
现在我已经在我的代码中实现了上面的代码来构建它,现在当我尝试运行该作业时它会失败。如果我注释掉整个部分,那么工作将运行正常。那么我如何在中间相遇?我需要该部分来构建项目,但我需要将其注释掉以使程序运行...【参考方案4】:在单元测试的情况下,如果您使用 Resharper 进行单元测试,那么您已经知道其他答案都不适合您。
Resharper 启动 ResharperTestRunner(32 位或 64 位)以执行您的单元测试。该文件位于(至少在我的系统中)C:\Users[user]\AppData\Local\JetBrains\Installations\ResharperPlatform[version] 下。此文件的配置应位于同一位置并应具有相同的名称,但带有 .config 后缀。在我的系统中,它不存在。所以,我创建了它并添加了这个:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<!-- 4.0 RTM -->
<supportedRuntime version="v4.0.30319"/>
<!-- 2.0 RTM -->
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
然后,我的测试开始起作用了。希望这会有所帮助。
【讨论】:
以上是关于混合模式程序集是针对“v2.0.50727”错误构建的的主要内容,如果未能解决你的问题,请参考以下文章
混合模式程序集是针对运行时的“v2.0.50727”版本构建的,无法在 4.0 运行时中加载 - 研究的解决方案不起作用
错误混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。