【发布时间】:2016-10-10 08:10:12
【问题描述】:
我有一个从 Visual Basic 6 应用程序调用的 C# COM-Interop 程序集。此程序集发出 HTTP 请求以发送和检索 JSON。
在使用 C# 测试客户端进行测试时,程序集工作正常。
但是,当从 VB6 应用程序中使用它时,会返回以下错误:
“无法加载文件或程序集 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。系统找不到指定的文件。”
Newtonsoft.Json.dll 与 COM-Interop DLL (TLB) 位于同一文件夹中。
Newtonsoft.Json.dll 是否需要显式加载?或者可能放在 GAC 中?
【问题讨论】:
-
所以您在 COM 中注册的不是 Json.Net,而是另一个使用 Json.Net 的 .Net 程序集?
-
此错误是否来自您的 C# 互操作程序集?您可能希望使用 Process Monitor 之类的工具来精确观察您的应用程序在尝试查找 Newtonsoft.Json.dll 文件时所查找的位置。
-
@Liam 是的。使用标准 Newtonsoft.Json 程序集的 COM 互操作 DLL。
-
我认为您需要将 Newtonsoft dll 与 COM dll 放在同一目录中。这是一个依赖项,因此需要能够访问它。那就是说我的 COM 生锈了
-
@Liam COM DLL 所需的任何 DLL 都会在构建项目时由 VS2012 自动复制到那里。所以,是的,它们与 COM DLL 在同一个文件夹中。
标签: c# json.net dependency-management com-interop