Ale*_*son 24 clr .net-4.0 .net-2.0
如果我需要从4.0 CLR应用程序链接到2.0 CLR程序集(纯托管代码,没有混合模式问题),2.0代码是否在2.0 CLR或4.0上运行.
基本上,是否存在影响2.0代码的4.0破坏性更改的风险?
Jas*_*ort 18
上面的答案是不正确的.你确实与完整的框架并排..Net 2 APPLICATION(请注意,这意味着EXE,而不是库)不会自动升级到.Net 4.
但是,如果.Net 4应用程序加载.Net 2程序集,它将加载到同一运行时(否则它们如何共享信息).使用兼容模式将.Net 2程序集加载到.net 4运行时,该模式应该最大程度地减少更改中的破坏(主要用于.Net 4中的安全性更改).
.Net 2程序集不能引用.Net 4程序集,因为它没有功能.
我所知道的唯一例外是你从C++应用程序加载.Net程序集.C++应用程序可以加载和托管两个运行时.它可能会加载.Net 2程序集和.Net 4程序集,但它们无法直接相互通信.这就是CLR Procs在SQL Server中的工作方式.您可以使用.Net 2 CLR Proc和.Net 4 CLR Proc,它们不通信,但都加载到服务器上.
MSDN杂志上有一篇关于最近托管.Net框架的文章,但我现在找不到它.也许其他人可以发布链接.
因此,您应该能够将任何.Net 2程序集加载到.Net 4可执行文件中,而不会出现太多问题.我见过的唯一问题是安全权限.
基本上,是否存在影响2.0代码的4.0破坏性更改的风险?
不.从.NET 4开始,您根本不必担心兼容性问题!版本4引入了一个名为"进程内并行执行"的新功能,它基本上允许您将多个版本的CLR加载到同一进程中.
换句话说,由于您的主应用程序在4.0运行时运行,因此您可以告诉它在加载2.0 CLR程序集时加载2.0运行时.2.0 CLR程序集将使用2.0运行时,而您的应用程序将继续使用4.0运行时.
你怎么指定这个?我相信你可以为你的2.0 CLR程序集添加一个配置文件(例如"My.dll.config"与"My.dll"在同一目录中),但我自己没有尝试过DLL.不过,这是你在程序集的配置文件中放入的内容:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8829 次 |
| 最近记录: |