This is my current deployment scenario:
- Client application is deployed in folder A
- COM DLL, C++/CLI wrapper DLL and .NET assembly are deployed in folder B
- DLLs/assemblies together form an SDK, the client application is a third-party consumer
This is how it is supposed to work:
- Client application starts and creates COM object
- Client application calls function in COM object
- COM Object forwards call to C++/CLI wrapper DLL
- C++/CLI ラッパー関数が呼び出しを .NET アセンブリに転送する
問題: C++/CLI ラッパーが .NET アセンブリを見つけることができず、アプリケーションがクラッシュします。
これまでに考えられる解決策:
- .NET アセンブリに厳密な名前を付けて、フォルダ B ではなく GAC に展開します。
- クライアント アプリケーションに .config ファイルを渡し、フォルダー B でアセンブリを探すように指示します。
- .NET アセンブリを動的にロードする C++/CLI ラッパーに、ある種のカスタム「リゾルバー ルーチン」を追加します (この SO answerのようなもの) 。
さまざまな理由から、これらのソリューションのどれも特に魅力的とは思えません。この問題を解決できる他のメカニズムを知っていますか? 理想的なソリューションは、SDK 側で何らかの構成を使用することですが、私の知る限り、アセンブリに .config ファイルを与えることはできませんか?
私は特に .NET に精通しているわけではないので、「リゾルバー ルーチン」ソリューションに関するコメントをいただければ幸いです。これは人々が日常的に行っていることですか、それとも何らかの理由で避けるべき珍しいことですか?