我曾看到一些讨论在新版CLR 4.0应用程序中使用旧版CLR 2.0组件的情况,但如果相反地需要做到这一点呢?
例如,如果有一个.Net 2.0的遗留应用程序,并希望利用完全利用4.0版本CLR的较新业务逻辑,该如何在遗留应用程序中引用较新的组件并访问其方法?如果遗留应用程序是.Net 1.1,是否仍然适用同样的方法?
(为了明确起见添加附注)
虽然升级是理想的,但仍存在技术或政治限制的边缘情况。
我曾看到一些讨论在新版CLR 4.0应用程序中使用旧版CLR 2.0组件的情况,但如果相反地需要做到这一点呢?
例如,如果有一个.Net 2.0的遗留应用程序,并希望利用完全利用4.0版本CLR的较新业务逻辑,该如何在遗留应用程序中引用较新的组件并访问其方法?如果遗留应用程序是.Net 1.1,是否仍然适用同样的方法?
(为了明确起见添加附注)
虽然升级是理想的,但仍存在技术或政治限制的边缘情况。
一般来说,您应该将遗留应用程序升级到使用.NET 4。代码不应需要更改。
否则,处理此问题的主要支持方法是通过COM互操作性。您的.NET 4类可以标记为[ComVisible]
,然后您可以构建互操作性程序集以在旧版.NET版本中“消耗”它。
然而,这种方法有许多缺点 - 包括增加了大量复杂性和降低了性能。
请查看Rick Byers和Simon Hall:CLR 4-并置进程-什么。如何。为什么。
请检查this评论:
假设我拥有您在视频中提到的隔离级别,是否可以将clr4运行时In-process SxS加载到托管的clr2应用程序中(反之亦然)? 如果是,请问我需要做什么? 是否有任何托管API需要调用? 还是我需要某种层来为我加载其他clr? 有没有beta1的示例供我参考?