如何将较高版本的 .net 库 (.dll) 与较低版本的二进制文件集成
我有使用 .net Framework 4 编译的外部 .net 库(它的提供程序最近移至 .net 4) 我的代码当前在 .net Framework 3.5 上运行 如何在我的应用程序中使用该外部库? 将整个应用程序迁移到 .net 4 需要时间和测试,所以也许将来我会这样做,但现在有什么可能性?
I have external .net library compiled with .net framework 4 (it's provider moved recently to .net 4)
My code currently runs on .net framework 3.5
How to use that external library in my application ?
Moving whole application to .net 4 needs time and testing, so maybe in a future i will do that, but now, what are the possibilities ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不可能,.NET 3.5 附带的 CLR 版本无法加载 4.0 程序集。元数据格式已更改。您必须强制您的应用使用.NET 4.0 CLR 版本。为此,请使用 VS2010 重新编译它,目标为 4.0,或者使用包含
元素的 .config 文件来请求“v4.0”。顺便说一句,.NET 4.0 的兼容性非常好。
There are no possibilities, the CLR version that comes with .NET 3.5 cannot load 4.0 assemblies. The metadata format was changed. You have to force your app to use the .NET 4.0 CLR version. Do so by recompiling it with VS2010, targeting 4.0, or by using a .config file that contains the
<requestedRuntime>
element to ask for "v4.0".Compatibility for .NET 4.0 is excellent btw.
虽然您无法直接加载 .Net DLL,但您可以将其包装在 COM 接口中,并在 .Net 3.5 进程中加载该 COM 接口。
请参阅从 .NET 文件使用基于 .NET 4 的 DLL。 NET 2 基于应用程序
有关更多背景信息,Microsoft 最初添加了In-Process .Net 4 中的 Side-by-Side 可以更好地支持应用程序通过 COM 加载加载项的场景,并且加载项是使用各种版本的 .Net 编写的。在 .Net 3.5 进程中加载 .Net 4 DLL 的能力只是其一个很好的副作用。
While you cannot load the .Net DLL directly, you can wrap it in a COM interface, and load that COM interface in your .Net 3.5 process.
See Using a .NET 4 Based DLL From a .NET 2 Based Application
For more background information, Microsoft originally added In-Process Side-by-Side in .Net 4 to better support the scenario where an application loads add-ins via COM, and the add-ins were written with various versions of .Net. The ability to load .Net 4 DLLs in a .Net 3.5 process is just a nice side effect of that.