2013-07-22 52 views
0

什么是相当于大会提出的AppDomain.CurrentDomain.GetAssemblies() 在Windows 8获取Windows 8 C#中所有程序集列表?

我的目的是要加载来自不同项目在Windows 8项目中的所有模板控制。所以我想先加载当前解决方案中的所有程序集,然后从中获取控件?

回答

2

在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 
     } 
    } 
} 

在内部循环,你可以检查类型的某些属性,以识别哪些是您正在寻找的控件,并且可以根据需要使用它们。

+0

它不适用于.NET Native。需要在某处保存程序集名称。 –

相关问题