我有一个包含完整限定名的字符串MyNamespace.MyType
,我知道它在加载的程序集中。
我需要Type
在 Windows 商店应用程序中获取此实例。
我遇到的问题是,虽然 Windows 商店应用程序中有一些反射类,但它非常有限,我根本无法使用我一直在使用的桌面应用程序。
如果我能得到一个程序集,我可以在其中找到我的类型,所以我目前正在尝试获取所有已加载的程序集,因为AppDomain
不存在我无法轻松完成。
我发现了以下内容:
private async System.Threading.Tasks.Task<IEnumerable<Assembly>> GetAssembliesCore()
{
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
List<Assembly> assemblies = new List<Assembly>();
foreach (Windows.Storage.StorageFile file in
await folder.GetFilesAsync().AsTask().ConfigureAwait(false))
{
if (file.FileType == ".dll")
{
AssemblyName name = new AssemblyName() { Name = file.Name };
Assembly asm = Assembly.Load(name);
assemblies.Add(asm);
}
}
return assemblies;
}
我添加了.AsTask().ConfigureAwait(false)
以阻止它挂起,但它现在无法尝试加载程序集:
“无法加载文件或程序集'FDE.Audio.dll'或其依赖项之一。
系统找不到指定的文件。”:“FDE.Audio.dll”
我需要在清单中设置什么吗?还有什么?
如何在我的程序文件夹中加载程序集(AppX
我认为)?