C# 通过Excel和VBA使用COM的MissingMethodException

C# 通过Excel和VBA使用COM的MissingMethodException,c#,com,windows-server-2012,jit,missingmethodexception,C#,Com,Windows Server 2012,Jit,Missingmethodexception,我有一个C#库,从中我向COM公开了一些方法,以便可以从Excel VBA调用它们。此库引用了来自第三方的另一个.NEt库。当部署到Windows Server 2016时,这一切都非常有效。当它被移动到Windows Server 2012的实例时,当JIT编译器试图通过调用第三方库来JIT方法时,我会得到一个MissingMethodException 我可以在目标服务器上编译代码并对其进行测试,甚至可以从另一个.Net应用程序调用代码而不会出现任何问题。只有当从VBA代码调用它时,它才能加

我有一个C#库,从中我向COM公开了一些方法,以便可以从Excel VBA调用它们。此库引用了来自第三方的另一个.NEt库。当部署到Windows Server 2016时,这一切都非常有效。当它被移动到Windows Server 2012的实例时,当JIT编译器试图通过调用第三方库来JIT方法时,我会得到一个MissingMethodException

我可以在目标服务器上编译代码并对其进行测试,甚至可以从另一个.Net应用程序调用代码而不会出现任何问题。只有当从VBA代码调用它时,它才能加载并执行第三方代码

我已经更改了库中的代码,在第三部分库中执行Assembly.LoadFrom(),然后可以使用反射来查找该方法。但是,如果从MethodInfo调用该方法,我会得到一个失败的结果,在QuickWatch窗口中检查时,我会收到一条消息“C#编译器中的内部错误”。我可以通过执行Excel并在我的库中停止来调试我的代码,除了尝试将包含代码的方法执行到第三方库时,其他一切似乎都很好,因为JIT不会编译它


如何调试JIT编译器无法找到并加载我正在使用的程序集的原因?

两台服务器肯定100%安装了相同版本的第三方DLL?肯定100%没有,MissingMethodException始终是一个DLL地狱问题。发现您现在还需要注意部署其他人的DLL的正确版本是很常见的。令人厌烦,但这就是为什么他们付给你大笔钱;)是的,绝对是第三方DLL的同一版本。我自己抄的。如果通过C#代码访问,则它可以工作,但在使用Regasm.exe设置的COM接口时则不能工作