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

Car*_*tte 4 c# win-universal-app coreclr

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

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

Why*_*ser 5

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

    public static async Task<List<Assembly>> GetAssemblyList()
    {
        List<Assembly> assemblies = new List<Assembly>();

        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;
     }
Run Code Online (Sandbox Code Playgroud)

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

foreach (var assembly in GetAssemblyList().Result)
{
   //Do something with it
}
Run Code Online (Sandbox Code Playgroud)

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