【发布时间】:2011-05-21 14:30:25
【问题描述】:
我有使用 .net 框架 4 编译的外部 .net 库(它的提供程序最近移至 .net 4) 我的代码目前在 .net framework 3.5 上运行 如何在我的应用程序中使用该外部库? 将整个应用程序迁移到 .net 4 需要时间和测试,所以也许将来我会这样做,但现在,有什么可能性?
【问题讨论】:
标签: .net frameworks external
我有使用 .net 框架 4 编译的外部 .net 库(它的提供程序最近移至 .net 4) 我的代码目前在 .net framework 3.5 上运行 如何在我的应用程序中使用该外部库? 将整个应用程序迁移到 .net 4 需要时间和测试,所以也许将来我会这样做,但现在,有什么可能性?
【问题讨论】:
标签: .net frameworks external
没有任何可能,.NET 3.5 附带的 CLR 版本无法加载 4.0 程序集。元数据格式已更改。您必须强制您的应用使用 .NET 4.0 CLR 版本。使用 VS2010 重新编译它,以 4.0 为目标,或使用包含 <requestedRuntime> 元素的 .config 文件来请求“v4.0”。
.NET 4.0 的兼容性非常好。
【讨论】:
虽然您无法直接加载 .Net DLL,但您可以将其包装在 COM 接口中,然后在您的 .Net 3.5 进程中加载该 COM 接口。
见Using a .NET 4 Based DLL From a .NET 2 Based Application
为了了解更多背景信息,微软最初在 .Net 4 中添加了In-Process Side-by-Side,以更好地支持应用程序通过 COM 加载插件的场景,并且插件是使用各种版本的 .Net 编写的。在 .Net 3.5 进程中加载 .Net 4 DLL 的能力只是一个很好的副作用。
【讨论】: