【问题标题】:Mixed mode assembly is built against 'v2.0.50727' error混合模式程序集是针对“v2.0.50727”错误构建的
【发布时间】:2013-01-26 17:28:15
【问题描述】:

首先,我在 StackOverflow 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 版

标签: c# .net .net-4.0 .net-2.0 mixed-mode


【解决方案1】:

http://support.microsoft.com/kb/2572158

将下面的措辞 useLegacyV2RuntimeActivationPolicy="true" 添加到以下任一位置:

  1. sgen.exe.config 文件位于以下位置:..\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\
  2. 应用程序的 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>
    

    然后,我的测试开始起作用了。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2016-03-29
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多