【发布时间】:2013-05-22 17:01:29
【问题描述】:
我发现了这个问题的一些变体,但是当你想要加载你的程序集时,混合所有这些标准似乎会产生它自己的一组错误
- 在另一个应用程序域中
- 从另一个文件夹
- 附加依赖项
我需要所有这些来加载我的第三方插件并找到一些看起来像解决方案但在这里不起作用的东西:How to Load an Assembly to AppDomain with all references recursively? 即使通过所有的 cmets,我也没有设法让其中任何一个工作,我仍然在引用的程序集上遇到 FileNotFoundExceptions。 但是,我在其中一个 cmets 中找到了一个可以满足我需求的框架:https://github.com/jduv/AppDomainToolkit 但这似乎也不起作用,这是我在这个框架中使用的示例代码,但我仍然得到一个找不到文件的异常
var uploadedPluginsDirectories = new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(),"UploadedModules"));
foreach(var uploadedPluginsDirectory in uploadedPluginsDirectories.GetDirectories())
{
foreach (var pluginFile in uploadedPluginsDirectory.GetFiles("*.dll")
.Where(f=>f.Name == "DeepSearch.Modules.Excel.Graphs.dll"))
{
var context = AppDomainContext.Create();
int Count = context.Domain.GetAssemblies().Count();
context.RemoteResolver.AddProbePath(pluginFile.Directory.FullName);
var load = context.LoadAssemblyWithReferences(LoadMethod.LoadFrom, pluginFile.FullName);
// This crashes complaining about FileNotFoundException on one of the assemblies referenced by the one i'm trying to load, they both are in pluginFile.Directory.FullName
Count = context.Domain.GetAssemblies().Count();
Count.ToString();
}
}
编辑:为了澄清 cmets 的要求,我正在寻求帮助以使 sn-p 正常工作,如上所述,我遇到了一个例外,我只提到了我之前尝试列出的选项对我来说失败了,但我正在寻求帮助,而不是以前的选项,因为这似乎比自己使用 AppDomain 和远程 API 更干净。
【问题讨论】:
-
-1:到目前为止,该帖子缺少任何类型的问题。 “似乎不起作用”既不是对问题的详细解释,也不是疑问。
-
+1 阿列克谢! @Ronan:请提出一个问题,我们可以帮助您解决问题...
-
你好,不工作意味着我放弃了它,我想要的是让框架工作,如果不清楚,很抱歉,但我的问题是我如何让我粘贴的代码在没有的情况下工作我得到的例外,在我看来,它应该按照文档和单元测试的方式工作
-
实际上 -1 是不值得的,正如我在代码注释中所问的那样,但我看到发生了什么,它滚动过去的视图:( 现在修复格式,问题是关于代码中的异常(在哪里评论是)
标签: c# .net reflection marshalling appdomain