3

为了简化我的问题,我会尽量简短:

我正在使用 Unity 的专业版,并且我有 2 个 DLL:

  1. .NET 3.5 程序集(充当 COM 客户端)
  2. .NET 4.0 程序集(具有通过 COM 公开的接口)

3.5 使用 COM 与 4.0 一起工作。在 Windows 应用程序中使用 3.5 程序集可以正常工作,它通过 Type.GetTypeFromCLSID() 或 Type.GetTypeFromProgID() 使用 SxS 加载 4.0 dll(我已经通过 SxStrace 确认),并且可以很好地使用它的功能。(Windows 应用程序通过清单提到它依赖于 4.0 DLL,我没有注册 COM DLL。)

我正在尝试在 Unity 中使用 .NET 4.0 DLL。显然我不能直接使用它,因为目前 Unity 使用的 Mono 版本最多只支持 3.5,因此我创建了 3.5 程序集作为我的中间人。我可以很好地统一使用 3.5 程序集,但是我之前提到的任何一种 Type 方法都会抛出 NotImplementedException(s),因为显然 Unity(或者更确切地说,Mono)不支持它们,所以我在失利。

有任何想法吗?

4

1 回答 1

1

尽管这个问题是 1 年前提出的。遗憾的是,中间人策略仍然行不通,因为 Mono 不支持依赖项,所以无法在 Unity3D 中使用 .NET 4.0 dll。如果可能的话,您可以尝试从 dll 中删除任何 4.0 依赖项并将其编译为 3.5。

于 2013-06-09T20:04:22.370 回答