我正在建立一个工作库,让我们可以为各种不同的平台构建Unity3D项目。有一个实现泛型函数的核心库,然后每个特定的平台都在一个单独的DLL中实现,作为插件。其中一个平台是Microsoft HoloLens。
通常情况下,Unity3D应用程序是一个Mono应用程序,内置大量hackery,这是基于Unity-the-company无法跟上.NET版本的时间。但在HoloLens上,您可以运行的唯一类型的应用程序是UWP应用程序。您可以选择将它们作为.NET Core或.NET Native应用程序运行。
当我在Debug或Release版本(即.NET Core模式)中运行项目时,我可以通过以下(简化的)Linq查询找到我的插件(这在启动时发生,而不是每帧,因此性能影响使用Linq查询而不是手动迭代可以忽略不计。)
(from file in await Package.Current.InstalledLocation.GetFilesAsync()
where file.Name.EndsWith(".dll") || file.Name.EndsWith(".exe")
let asmName = new AssemblyName(file.DisplayName)
let asm = Assembly.Load(name)
let t = asm?.GetType("MyCompany.MyProject.MyClass")
where t != null
select t).FirstOrDefault();
但是当我以主模式(即.NET Native)运行时,同样的代码无法找到感兴趣的类型。
Type.GetType
也找不到类型。