获取Windows 8 C#中的所有程序集列表

本文关键字:程序集 列表 Windows 获取 | 更新日期: 2023-09-27 18:24:08

AppDomain.CurrentDomain.GetAssemblies()中程序集a的等价物是什么在Windows 8中。

我的目标是在Windows8项目中加载来自不同项目的所有模板控件。所以我试图首先加载当前解决方案中的所有程序集,然后从中获取控件?

获取Windows 8 C#中的所有程序集列表

Windows应用商店应用程序中没有完全等效的应用程序,这是有充分理由的:这些应用程序是以包的形式分发的,没有办法用插件来扩展它们,即在部署应用程序时,您确切地知道应用程序由哪些程序集组成。

要分发程序集(包括在项目中),首先需要从主项目中引用它们。然后,您可以使用以下代码迭代包安装位置中的所有程序集,加载它们并迭代它们的类型(在生产中使用此代码之前,您应该添加一些异常处理):

var folder = Package.Current.InstalledLocation;
foreach (var file in await folder.GetFilesAsync())
{
    if (file.FileType == ".dll")
    {
        var assemblyName = new AssemblyName(file.DisplayName);
        var assembly = Assembly.Load(assemblyName);
        foreach (var type in assembly.ExportedTypes)
        {
            // check type and do something with it
        }
    }
}

在内部循环中,您可以检查该类型的一些属性,以识别其中哪些是您正在寻找的控件,并根据需要对它们进行处理。