混合模式组件是针对“v2.0.50727”错误构建的

时间:2013-02-11 15:17:43

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

首先,我在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个其他项目设置完全相同,并且构建正常。

4 个答案:

答案 0 :(得分:14)

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文件
  3. <startup useLegacyV2RuntimeActivationPolicy="true">
    
                <supportedRuntime version="v4.0" />
    
    </startup>    
    

答案 1 :(得分: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>

答案 2 :(得分:0)

这是有效的解决方案......仍然不确定为什么我的项目需要为2.0而其他人(在我的问题的链接中)需要为4.0。

  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>

答案 3 :(得分:0)

对于单元测试,如果您使用Resharper进行单元测试,那么您已经知道没有其他答案对您有用。

Resharper启动ResharperTestRunner(32位或64位)以执行单元测试。该文件位于(至少在我的系统中)C:\ Users [用户] \ 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>

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