我的应用程序是本机的非.NET应用程序。但是,有时可能需要通过COM调用某些.NET服务。有时它需要加载特定版本的.NET来完成它需要做的事情。 (我的应用程序使用COM接口System.EnterpriseServices
以编程方式注册程序集并将其安装在GAC中。
通常情况下,我可以使用MyApp.exe.config
(as explained here),如果此信息是提前知道的,并且在两次运行之间没有变化。
不幸的是,要加载的.NET的特定版本在运行时才会知道(事实上,在同一系统上运行之间可能会发生变化)。因此,使用MyApp.exe.config
将无效。
在加载.NET之前,本机应用程序是否有办法以编程方式向Windows提供此信息?
(虽然我的应用程序是用Delphi编写的,但这更像是一般的Windows问题,欢迎任何语言的答案)
答案 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++