GetEntryAssembly返回null ...如何避免它?

时间:2012-04-13 09:02:34

标签: c# wpf vb.net vb6 assemblies

我有一个WPF应用程序,它使用第三方库来执行特定任务;该库在其中一个方法中执行语句Assembly.GetEntryAssembly()

如果我在调试时运行WPF应用程序(通过运行.Net exe进行测试),库正常工作,Assembly.GetEntryAssembly()返回对可执行文件程序集的引用,但在生产中我有不同的情况,给我带来了一些问题。

在生产中,WPF应用程序与VB6应用程序集成,程序使用InteropFormLibrary从VB6菜单启动;在这种情况下,库会引发异常,因为Assembly.GetEntryAssembly()返回null(它找不到与程序集关联的可执行文件)。

我的问题是我无法更改库的代码,因为我没有可用的源代码,我找到了dll反编译器抛出异常并分析其中的方法的语句异常。

现在我的问题是:有没有办法确保方法GetEntryAssembly不会返回null?我能以某种方式分配或“规避”吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是让dll的开发人员修复他的代码,以支持在本机(如VB6或C / C ++)进程中托管。

也就是说,如果它不可能,你可以尝试在一个单独的进程中托管你的.NET,基于.NET exe。由于您正在使用VB6互操作,因此您可能已经在使用COM互操作,因此您可以切换到进程外COM模型。这样,您的.NET组件可以在.NET exe中运行并具有入口点程序集。我已经因为类似的原因这样做了,它对我来说很好。