2013-07-22 88 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。需要在某處保存程序集名稱。 –

相關問題