在.NET 4.0中加载3.5编译的C ++ / CLI应用程序

时间:2010-03-10 22:31:02

标签: .net-4.0 c++-cli

我正在尝试加载在4.0 CLR中为Framework 3.5编译和定位的混合托管应用程序。

我在.exe旁边有一个.config文件,我添加了这个节点:

<?xml version="1.0"?> 
<configuration>
<startup>
    <supportedRuntime version="v4.0.21006" />
</startup>

不幸的是,该应用程序在启动时因恶意的callstack而崩溃。有人知道确认混合托管应用程序(.exe是C ++ / CLI)如果是为3.5编译而不会加载到4.0中吗?

我正在观看关于并排CLR托管的Channel9视频,其中一个开发人员似乎暗示情况就是这样:

http://channel9.msdn.com/shows/Going+Deep/CLR-4-Side-by-Side-In-Process-What-How-Why/

谢谢!

2 个答案:

答案 0 :(得分:4)

如果要在CLR 4进程中加载​​CLR 2(.NET 3.5)混合模式程序集,则需要设置useLegacyV2RuntimeActivationPolicy

<?xml version="1.0"?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

如果没有这个,你会得到一个令人讨厌的例外。

答案 1 :(得分:0)

您应该能够在同一个过程中运行3.5和4.0。但是,强制应用程序使用4.0而不是3.5是不可能的。

你想要完成什么?