我有一个使用第三方库执行特定任务的WPF应用程序;该库在其一种方法中执行语句Assembly.GetEntryAssembly()
。GetEntryAssembly返回null ...如何避免它?
如果我在调试时运行WPF应用程序(通过运行.Net EXE进行测试),该库工作正常,并且Assembly.GetEntryAssembly()
返回对可执行文件的程序集的引用,但在生产中,我遇到了一些不同的情况,问题。
在生产中,WPF应用程序与VB6应用程序集成在一起,并且使用InteropFormLibrary
从VB6菜单启动程序;在这种情况下,库引发异常,因为Assembly.GetEntryAssembly()
返回null
(它找不到与程序集关联的可执行文件)。
我的问题是,我无法更改库的代码,因为我没有可用的源代码,并且发现反编译器会抛出异常,并分析出现异常的方法。
现在我的问题是:有什么办法可以确保方法GetEntryAssembly
不返回null
?我能以某种方式分配或“绕过”吗?
是否有可能在新的AppDomain中执行WPF应用程序? – Matten 2012-04-13 09:05:13
我在尝试,但是互操作存在一些问题 – 2012-04-13 09:41:40
最简洁的方法是联系库开发人员,因为MSDN声明如果从非托管代码调用GetEntryAssembly将返回null。 http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.100%29.aspx – Matten 2012-04-13 09:46:37