什么相当于AppDomain.CurrentDomain.GetAssemblies()
Windows 8 中的 Assembly a。
我的目标是从 Windows 8 项目中的不同项目加载所有模板控件。所以我试图首先加载当前解决方案中的所有程序集,然后从中获取控件?
什么相当于AppDomain.CurrentDomain.GetAssemblies()
Windows 8 中的 Assembly a。
我的目标是从 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
}
}
}
在内部循环中,您可以检查该类型的某些属性,以识别其中哪些是您正在寻找的控件,并根据需要对它们进行处理。