获取UAP10平台上已加载程序集的列表

在针对.NET Framework 4的“普通”.NET程序集上,我可以使用AppDomain.CurrentDomain.GetAssemblies()来获取所有已加载程序集的列表。

如何在Windows Universal App或CoreCLR应用程序上执行此操作?

有点做你想做的事情的一种方法是获取位于安装你的应用程序的文件夹中的DLL /程序集(在某些情况下可以假设在你的应用程序中使用/加载)。

  public static async Task> GetAssemblyList() { List assemblies = new List(); var files = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFilesAsync(); if (files == null) return assemblies; foreach (var file in files.Where(file => file.FileType == ".dll" || file.FileType == ".exe")) { try { assemblies.Add(Assembly.Load(new AssemblyName(file.DisplayName))); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } } return assemblies; } 

然后循环遍历它们你可以做到:

 foreach (var assembly in GetAssemblyList().Result) { //Do something with it } 

对此reddit线程/用户的信用。

如何在Windows Universal App或CoreCLR应用程序上执行此操作?

不,你不能。 与Full.NET相比,.NET for UWP仅提供有限级别的reflectionfunction。 在.NET for UWP中,您只能使用下面的代码获取程序集信息。

 var assembly = this.GetType().GetTypeInfo().Assembly;