0
什麼是相當於大會提出的AppDomain.CurrentDomain.GetAssemblies()
在Windows 8獲取Windows 8 C#中所有程序集列表?
我的目的是要加載來自不同項目在Windows 8項目中的所有模板控制。所以我想先加載當前解決方案中的所有程序集,然後從中獲取控件?
什麼是相當於大會提出的AppDomain.CurrentDomain.GetAssemblies()
在Windows 8獲取Windows 8 C#中所有程序集列表?
我的目的是要加載來自不同項目在Windows 8項目中的所有模板控制。所以我想先加載當前解決方案中的所有程序集,然後從中獲取控件?
在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
}
}
}
在內部循環,你可以檢查類型的某些屬性,以識別哪些是您正在尋找的控件,並且可以根據需要使用它們。
它不適用於.NET Native。需要在某處保存程序集名稱。 –