首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UAP10平台上获取加载的程序集列表

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

Stack Overflow用户
提问于 2015-09-09 18:50:57
回答 3查看 2K关注 0票数 4

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

如何在或CoreCLR应用程序上做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-30 10:08:06

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

代码语言:javascript
复制
    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;
     }

然后遍历它们,您可以这样做:

代码语言:javascript
复制
foreach (var assembly in GetAssemblyList().Result)
{
   //Do something with it
}

这个编辑线程/用户的学分。

票数 5
EN

Stack Overflow用户

发布于 2015-09-11 08:10:40

如何在或CoreCLR应用程序上做到这一点?

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

代码语言:javascript
复制
var assembly = this.GetType().GetTypeInfo().Assembly;
票数 4
EN

Stack Overflow用户

发布于 2018-12-20 20:52:59

在我们的例子中,我们可以使用AppDomain.CurrentDomain.GetAssemblies(),这是在.NET标准中。

唯一的问题是,如果没有对项目的直接代码引用,即使存在项目引用,它也找不到程序集。这就是我们的情况,因为我们使用MEF来做事情。为了解决这个问题,我们只设置了一个虚拟代码引用。

我喜欢“智能”编译器:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32487141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档