首先,我在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个其他项目设置完全相同,并且构建正常。
答案 0 :(得分:14)
http://support.microsoft.com/kb/2572158
将下面的措词useLegacyV2RuntimeActivationPolicy="true"
添加到以下任一位置:
<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>
然后,我的测试开始起作用。希望这会有所帮助。