1

我的项目文件夹中有一个 .dll 文件,想通过 Assembly.Load() 加载它。

AssemblyName name = new AssemblyName("Portable.Store, Version=0.1.0.0, Culture=neutral, PublicKeyToken=12ay62c33eocf6uf");
Assembly assembly = Assembly.Load(name);

FileNotFoundException但是,由于未指定路径,这会引发错误。而且我无法使用Assembly.LoadFrom()Assembly.LoadFile()因为便携式类库仅支持Assembly.Load()

有没有办法在 pcl 中做到这一点?任何帮助表示赞赏,谢谢!

编辑#1:如果我要加载的程序集是非 PCL,这有关系吗?我知道这违背了 PCL 的目的,但是 PCL 中没有包含一些库。因此使用条件编译,根据平台,我将加载平台特定的程序集。

编辑#2:找到有关 dll 应放置在何处的更多信息:https ://stackoverflow.com/a/6440406/2464165

到目前为止,我只是将它放在我的项目文件夹中,带有 .sln 文件,什么不是应用程序探测路径到底在哪里?

编辑#3:我能够将我的 dll 文件放在 .dll 文件的资源文件夹中。所以我有MyPCL.dll,里面有ResourcesFolder/Portable.Store。我怎么能告诉 Assembly.Load 查看特定文件夹而不仅仅是主 AppX 根目录?

4

1 回答 1

2

我假设您正在 Windows 应用商店应用程序中运行可移植库(基于您尝试加载的程序集名称)。

有两个存储应用程序的地方可以找到它们的程序集,如果它是框架程序集,则在 GAC 中;如果它是用户程序集,则在 Appx 包中。

由于“Portable.Store”(我假设它来自我的 PclContrib 项目)是一个用户程序集,它必须从 AppX 包中加载。要确保这两个程序集最终都包含在 AppX 包中,只需确保包含 AppxManifest 的 Windows 应用商店项目引用它们。而已。

如果 Assembly.Load 仍然找不到程序集,请检查以确保您传递给 Assembly.Load 的强名称是正确的。

于 2013-08-14T20:37:05.677 回答