当从带有脚本OnBase的第三方应用程序调用公司库中的方法时,我收到了MissingMethodException(引用特定方法).调用该方法的对象已存在,并在此点之前成功执行其他调用.
我已经确认的事情:
>此库中的其他引用正常工作
>方法是公开的
>相关脚本引用的DLL版本具有方法(重建程序集并重新导入它,输出显示当前日期作为创建日期,OnBase显示正确的更新版本号)
> GAC中没有DLL版本
>自导入以来,服务器应用程序已重新启动
另外值得注意的是,OnBase中脚本编辑器的代码完成也找不到方法,但它也能成功构建.
>我应该寻找旧DLL的不常见的位置是什么?
>是否有任何OnBase特定位置?
>还有什么其他原因?
最佳答案
To clarify, assembly 1 is referenced by the script and contains the method that’s coming back missing, and assembly 2 is referenced by assembly 1 and the script both. Assembly 2 works in all cases, assembly 1 works except this one method.
发生这种情况的原因是程序集1和脚本引用了程序集2的不同版本,因此当我们尝试将程序集2中定义的对象传递给程序集1中的方法时,它来自一个没有的程序集匹配,所以缺少的是具有该特定签名的方法,即DoStuff(v1.Foo)存在但DoStuff(v2.Foo)没有.显然,错误只表明DoStuff(Foo)丢失了.