9

首先,我在这里找到了 StackOverflow 上的其他帖子,但它并没有解决我的错误。

我有 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

4 回答 4

17

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>    

于 2013-10-04T08:31:37.490 回答
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>
于 2014-03-24T20:19:43.140 回答
0

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

  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
于 2013-02-11T18:37:04.320 回答
0

在单元测试的情况下,如果您使用 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>

然后,我的测试开始起作用。希望这可以帮助。

于 2019-01-16T17:58:47.173 回答