开发者

Loading a 3.5 compiled C++/CLI application in .NET 4.0

I'm trying to load a mixed managed application compiled and targeted for Framework 3.5 in the 4.0 CLR.

We have a .config file next to the .exe where I've added this node:

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

Unfortunately, the app crashes out on startup with a nasty callstack. Can someone in the know confirm that a mixed managed app (.exe is C++/CLI) will not load in 4.0 if it was compiled for 3.5?

I'm wat开发者_如何学JAVAching a Channel9 video about side-by-side CLR hosting, and one of the devs seems to imply that this is the case:

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

Thanks!


You need to set useLegacyV2RuntimeActivationPolicy if you want to load a CLR 2 (.NET 3.5) mixed mode assembly in a CLR 4 process:

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

Without this, you'll get a nasty exception.


You should be able to run 3.5 and 4.0 in the same process. However forcing the app to use 4.0 instead of 3.5 doesn't look possible.

What are you trying to accomplish?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜