私の問題を過度に単純化するために、私はそれを短くしようとします:
Unityのプロバージョンを使用していて、2つのDLLがあります。
- .NET 3.5アセンブリ(COMクライアントとして機能)
- .NET 4.0アセンブリ(COMを介して公開されたインターフェイスを使用)
3.5はCOMを使用して4.0で動作します。Windowsアプリで3.5アセンブリを使用すると、正常に動作し、Type.GetTypeFromCLSID()またはType.GetTypeFromProgID()(SxStraceで確認済み)を介してSxSを使用して4.0 dllをロードし、その機能を正常に使用できます。(Windowsアプリは、マニフェストを介して4.0 DLLに依存していると述べていますが、COM DLLを登録していません。)
Unityで.NET4.0DLLを使用しようとしています。Unityが使用しているMonoの現在のフレーバーは3.5までしかサポートしていないため、明らかに直接使用することはできません。そのため、仲介者として3.5アセンブリを作成しました。3.5アセンブリを1つで問題なく使用できますが、前述のTypeメソッドのいずれかがNotImplementedException(s)をスローします。これは、Unity(またはMono)でサポートされていないため、損失。
何か案は?