2017-12-07 54 views
0

protobuf-netパッケージ用のC#でラッパーを作成しようとしていますが、ExcelのVBAから直接プロトコルバッファファイルにアクセスできます。 私は、protobuf-netへの参照を、ナゲットパッケージマネージャーを通して追加して書いています。私は私のアセンブリCOMを可視化し、VBAから私はクラスにアクセスすることができます。
しかし、私はprotobufferファイルをロードしようとすると、私は次のメッセージが出ます:COM interopでアセンブリを参照するときにProtobuf-netファイルまたはアセンブリが見つかりません

は、「ファイルまたはアセンブリ「いるProtobufネットをロードできませんでした、バージョン= 2.0.0.668、 文化=中立を、なPublicKeyToken = 257b51d87d2e4d67 'またはその依存関係の1つ 。システムは指定されたファイルを見つけることができません。 (ProtoBufInterface.OutputData)」

私がいるProtobuf-net.dllファイルがアセンブリディレクトリにコピーされていることを確認しています。これを引き起こしている何か、または私がそれを修正するために何ができるのでしょうか?

多くの感謝!

+0

eugh; COMの依存関係は王様の痛みです。ちょうどそれが動作するかどうかを確認するために怠惰な恐ろしいハックとして:それはGACに(protobuf - ネット)をインストールする場合は正常に動作しますか? –

+0

Hey Marc。早速のご返事ありがとうございます。申し訳ありません私はこれについて全く新しいです - あなたがGACにprotobuf-netをインストールする方法を教えてください。 – bgarrood

+0

https://docs.microsoft.com/en-us/dotnet/framework/tools/gacutil-exe-gac-tool –

答えて

0

protobuf-net.dllは、参照に追加する必要がある他のDLLによっても異なります。

明示的に指定されていない場合は、 "depends.net"のようなユーティリティを使用する必要があります。詳細情報は、このリンクで見つけることができます:

Modern Equivalent of Visual Studio 6 "Depends" utility

+0

protobuf-netには非標準の依存関係はありません。私たちが完全なフレームワークを話していると仮定すると(COM interopのため)、すべてがGAC内になければなりません。ナゲットから引用するには:https://i.stack.imgur.com/cKCk2.png –

1

私は、.NETリフレクターを使用して問題を発見しました。 私は2つの他のライブラリを参照しています.1つはprotobuf-net.dllで、もう1つはprotobuf-net.dllを参照するサードパーティのライブラリです。 問題は、サードパーティのライブラリ(2.0.0.668)で参照されているバージョンと、インストールしたバージョン(2.3.3)が異なることでした。実際には後見でエラーメッセージが私に必要なものすべてを教えてくれました。 protobuf-net.dllのリファレンスを2.0.0.668のバージョンに置き換えると、私の問題は解決しました。 protobuf-net.dllをGACに個別に登録する必要はありませんでした。

途中で助けをいただきありがとうございます。非常に高く評価。

+0

聞くのは大変です! .NET-landでは、アセンブリバインディングのリダイレクトを使用してこれをハックすることができます。それがCOM相互運用性の観点からどのように機能するかはわかりません –

関連する問題