MAF AddIn的EntryAssembly

时间:2011-12-29 23:24:33

标签: c# appdomain strongname maf

有没有办法设置MAF插件,以便System.Reflection.Assembly.GetEntryAssembly()在从插件的AppDomain内部调用时返回对插件主程序集的引用?

背景:为了满足我的项目的某些安全性要求,我必须在单独的AppDomain中加载addins,并且当从addin的AppDomain内部调用时,必须将GetEntryAssembly()的结果设置为addin(强名称)主程序集。我按照MSDN MAF walkthrough中列出的模式开发了一个测试用例。在我的测试用例中,如果程序集在单独的AppDomain(或进程)中加载,则GetEntryAssembly()始终返回null。

我注意到GetEntryAssembly文档说“当从非托管应用程序加载托管程序集时,GetEntryAssembly方法可以返回Nothing” - 这是否适用于跨越AppDomain边界的MAF代理?

有问题的程序集和可执行文件都有很强的名称。

1 个答案:

答案 0 :(得分:1)

你是对的。它确实返回Nothing(null)。

但请注意,在System.Reflection.Assembly.GetEntryAssembly中,“返回值”被描述为:

  

默认应用程序中可执行进程的程序集   域,或由执行的第一个可执行文件   AppDomain.ExecuteAssembly

AppDomain.ExecuteAssembly用于执行.NET应用程序的main方法。在您的情况下,没有应用程序执行。正在做什么,解释here

返回Nothing(null)是有意义的,因为没有调用ExecuteAssembly。

为什么不使用GetExecutingAssembly