以编程方式指定要加载的.NET版本

时间:2013-05-02 20:24:16

标签: .net delphi winapi com

我的应用程序是本机的非.NET应用程序。但是,有时可能需要通过COM调用某些.NET服务。有时它需要加载特定版本的.NET来完成它需要做的事情。 (我的应用程序使用COM接口System.EnterpriseServices以编程方式注册程序集并将其安装在GAC中。

通常情况下,我可以使用MyApp.exe.configas explained here),如果此信息是提前知道的,并且在两次运行之间没有变化。

不幸的是,要加载的.NET的特定版本在运行时才会知道(事实上,在同一系统上运行之间可能会发生变化)。因此,使用MyApp.exe.config将无效。

在加载.NET之前,本机应用程序是否有办法以编程方式向Windows提供此信息?

(虽然我的应用程序是用Delphi编写的,但这更像是一般的Windows问题,欢迎任何语言的答案)

1 个答案:

答案 0 :(得分:4)

您必须编写自己的CLR主机,而不是依赖IJW“它只是工作”.NET功能。

如果计算机上安装了.NET 4,则此链接将介绍如何执行此操作:Loading the Common Language Runtime into a Process。使用.NET 4,您甚至可以在同一进程中并排加载多个版本的CLR(但有限制)。

其他信息:Use CLR4 Hosting API to invoke .NET assembly from native C++