【问题标题】:DLL not found, Newtonsoft.Json [duplicate]找不到 DLL,Newtonsoft.Json [重复]
【发布时间】:2022-02-23 00:03:11
【问题描述】:

所以我构建了一个 Com 接口 DLL。我已经使用 Nunit 对其进行了全面测试。我遇到了 Newtonsoft.Json 的问题,通过将其包含在类库项目中未找到并解决。现在正如我所说,该项目是一个 COM 接口的 DLL。当我从 VBA 开发系统调用 DLL 时出现错误,我尚未在 IDE 之外对此 VBA 开发系统进行测试,这样做没有任何意义。

那么这个 DLL 是干什么用的?它是供应商 WEBAPI 的接口。它还用作 TCP 数据库访问工具。因此,通过 NUGET 包,DLL 中包含了依赖于 Newtonsoft.Json 的 WatsonTCP。这就是发生故障的地方。它使用的是 .Network 4.7.2。

我已将newtonsoft.Json.DLL复制到VBA项目文件夹、VBA IDE exe文件夹、System文件夹、syswow64。似乎没有人能解决这个问题。 dll 正在按预期从 Class 项目下的 bin 文件夹中执行。

还有什么建议吗?我一直在网上挖掘,到目前为止,上述尝试都是网上建议的。或者我没有输入正确的搜索词 8)。

【问题讨论】:

  • 感谢您的建议,我会阅读并尝试一下。谢谢。
  • 您是否将所有 DLL 文件放在一起?或者您是否将主 DLL 从它的依赖项中移开?编译 C# 项目时出现的所有内容都需要在运行时放在同一个文件夹中。
  • @hackslash,是的,整个项目和支持 dll 都在同一个文件夹中。我什至检查了主 DLL.config 文件,它的依赖关系如下:

标签: c# .net vba dll


【解决方案1】:

您必须安装 Nuget 包Newtonsoft.Json,因此当您构建项目时,您将能够使用它。 只需记住将 JSON DLL 复制到使用您的其他 DLL 的可执行文件所在的任何位置。

【讨论】:

  • 谢谢,已经完成了,DLL 再次通过 Nunit 测试进行了全面测试/审查。失败是从 VBA 应用程序调用 DLL 时。
  • 您需要将JSON dll复制到可执行文件夹中
  • 谢谢,是的,这是第一轮测试。我将 DLL 放在了几个帖子中建议的所有位置。经过多次审查,我刚刚添加了 WatsonTcp 克隆的 NUGET 源,确保 newtonsoft.Json 的 NUGet 包设置为我的 DLL 项目的最新版本。问题已解决。
【解决方案2】:

在多次尝试解决后,感谢所有在这里发帖的人和那些发帖到这里提供的链接的人,我决定采取直截了当的方法。首先,我通过已安装的 NUGET 包删除了对 Newtonsoft.Json 的所有项目引用,WatsonTCP 存在问题,因为它依赖于 Newtonsoft.Json,也必须这样做。

由于我之前在获取如何使用它的示例时下载了 WatsonTCP 源代码,因此我决定将 WatsonTCP 项目包含到我的解决方案中。我将该项目作为参考添加到我的项目中,将 NUGET newtonsoft.Json 更新为当前版本,现在它可以在 VBA 应用程序中正常运行。

注意:在采用此路径之前,我确实确认所有 dll 都在我正在调用的 COM 模块的 Bin 文件夹中,并确认 bin 文件夹是干净的。这是现在通过 VS2022 得到的解决方案。

【讨论】:

  • 这可能是 WatsonTCP 声明的对 Newtonsoft.Json NUGET 的 NUGET 依赖问题,而不是为 WatsonTCP 对抗 NUGET 我使用了源并设置了 newtonsoft.Json 版本。
猜你喜欢
  • 2011-06-26
  • 2019-01-01
  • 2012-11-08
  • 2015-06-13
  • 2021-07-25
  • 2017-10-30
  • 1970-01-01
  • 2018-09-06
  • 2012-07-25
相关资源
最近更新 更多