我正在尝试加载在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/
谢谢!
答案 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是不可能的。
你想要完成什么?