使用しようとしているCOMライブラリに問題があります。特定のメソッドを呼び出して渡すと、ArgumentExceptionが発生しnull
ます。Nothing
これは、Visual Studio 2008の「COM」リストからライブラリ参照を追加したC#プロジェクトとVB.NETプロジェクト(を使用してメソッドを呼び出す)の両方で発生します。Pythonでこれと同じメソッドを呼び出すと、None
、メソッドはエラーなしで期待どおりに機能します。PythonはDCOMを介してCOMライブラリと対話することを理解しています(そして、それが何を意味するかについては最も曖昧な概念しかありません)が、C#/VB.NETプロジェクトでCOMライブラリを参照するときに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を使用してテストしているため、これはスレッドの問題である可能性があります。