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。需要在某处保存程序集名称。 –