我需要为.NET API dll创建一个COM包装器,以便在MS Access中使用它。 我需要创建COM包装器的.NET API DLL使用Newtonsoft.Json.dll
所以我让他关注DLL&#39>
当我从COM客户端(MS Access)调用my.dll中的方法(调用api.dll中的方法)时出现错误
Could not load file or assembly Newtonsoft.Json.dll (blah blah) or one of its dependences. The system cannot find the file specified
我尝试在system.32中将Newtonsoft.dll和api.dll复制到MS Access文件夹中与Access MDB相同的文件夹中。没有任何效果。
我尝试使用
将Newtonsoft添加到GACgacutil /i newtonsoft.json.dll
显然有效,回应是
Assembly successfully added to the cache
但是当我试图用
检查它是否存在时gacutil /l newtonsoft.json.dll
我收到消息:项目数= 0,显然它没有被添加到GAC
无论如何,有任何建议让这项工作?
由于
答案 0 :(得分:0)
我发现并解决了这个问题。 在仔细检查错误消息时,我注意到它说它无法加载Newtonsoft.Json.dll版本4.5.0 但是,在我的项目中,我使用的是NewtonSoft的nuget包,版本为6.0.2
这导致我检查了api.dll构建的NewtonSoft的实际版本。
幸运的是我可以访问api dll源代码,我注意到它是针对旧版本的Newtonsoft,4.5.0 for NET 3.5构建的
即使有用于定义版本重定向的dll的app.config,当从COM客户端 - MS Access访问启用COM的DLL时,它似乎也无效。
但是在我重建api.dll以使用实际当前版本的NewtonSoft dll之后,所有内容都开始在COM调用中正常工作