我知道上面的问题可能是seen here,但我一直在努力理解为什么它在我的应用程序中失败了。
我有一个正在调用c#dll的vb.net dll。这是第三方dll,因此我无法控制它。我知道它是编写并编译到.net 4.5。
如果我在vb.net中编写了一个简单的.net 4.5应用程序,后来又调用了dll,则一切工作正常。实例已创建,我可以调用这些方法。
Dim comType = Type.GetTypeFromProgID("MyDLL.MyClass", True)
_comObject = Activator.CreateInstance(comType)
但是,如果我从vb.net dll进行相同的调用,则在尝试创建实例时会出现错误消息
System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.Runtime.InteropServices.SEHException:外部组件引发了异常。 在DesktopApi.Native.PInvoke.Init() 在DesktopApi.DesktopApi..ctor() ---内部异常堆栈跟踪的结尾--- 在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck) 在System.RuntimeType.CreateInstanceSlow处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark) 在System.RuntimeType.CreateInstanceDefaultCtor处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark) 在System.Activator.CreateInstance(Type type,Boolean nonPublic) 在System.Activator.CreateInstance(Type type)
关闭严格选项,打开显式选项。它正在编译为x86的目标cpu。这些选项与我创建的简单应用程序没有什么不同。
有人有想法吗?我已经在网上搜索了,但没有找到任何东西。令人恼火的是,所有这一切一直起作用,直到供应商更新为止。而且因为它可以在简单的应用程序中工作,所以他们并不真正感兴趣。