我在尝试使用的 COM 库时遇到问题。当我调用特定方法并传递它时,我得到一个 ArgumentException null
。这发生在我的 C# 项目和 VB.NET 项目(我使用 调用该方法Nothing
)中,我在 Visual Studio 2008 的“COM”列表中添加了库引用。当我在 Python 中调用相同的方法时,传入None
,该方法按预期工作,没有错误。我的理解是 Python 通过 DCOM 与 COM 库进行交互(我只有最模糊的概念),而当我在 C#/VB.NET 项目中引用它时,我可能会直接使用 COM 库。会不会发生什么事情会导致我传递的参数在它到达 COM 库之前搞砸了?我不确定这里发生了什么。我最近将 COM 库更新到了较新的版本,所以我想知道我是否在某个地方遇到了版本冲突,从而导致了异常。我从我的 C# 和 VB.NET 项目中删除了对 COM 库的所有引用,删除了所有目录,bin
并obj
重新添加了引用。这确实导致 Interop.MyCOMLibrary.dll 文件显示在obj
有今天的日期,而不是我一直看到的旧日期。
我对 COM 库的唯一文档描述了该方法,如下所示:
Public Function AddItem( _
ByVal ItemData As Variant _
) As Object
我现在正在尝试搜索有关Variant
参数的问题。
编辑:因此,虽然Type.Missing
其他解决方案可以让我顺利通过该方法调用,但尝试从该方法读取返回项目上的某些字符串属性会导致:
System.Runtime.InteropServices.COMException:项目不存在。
这是另一个在 Python 中工作但在 C# 中引发异常的示例,所以我猜测更多 DCOM 与 COM 的怪异。或者这可能是一个线程问题,因为我正在使用 MSTest 进行测试。