用于MAF插件的EntryAssembly

本文关键字:EntryAssembly 插件 MAF 用于 | 更新日期: 2023-09-27 18:18:59

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

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

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

程序集和可执行文件都有强名称

用于MAF插件的EntryAssembly

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

但是请注意,在System.Reflection.Assembly。GetEntryAssembly,"返回值"描述为:

在默认应用程序中作为进程可执行文件的程序集域,或由之执行的第一个可执行文件应用程序域中。ExecuteAssembly

应用程序域中。ExecuteAssembly用于执行。net应用程序的main方法。在您的情况下,不执行任何应用程序。这里解释了正在做的事情。

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

为什么不使用GetExecutingAssembly呢?