2011-12-29 22 views
1

有沒有辦法設置MAF的加載項,使System.Reflection.Assembly.GetEntryAssembly()返回從插件的AppDomain中調用時加載項的主要組件的參考?爲了滿足我的項目的某些安全需求,我必須在一個單獨的AppDomain中加載插件,並且當從插件的AppDomain中調用GetEntryAssembly()的結果時,必須將其結果設置爲插件的(強名稱)主程序集。我開發了一個測試用例,遵循MSDN MAF walkthrough中列出的模式。在我的測試用例中,如果程序集加載到單獨的AppDomain(或進程)中,GetEntryAssembly()總是返回null。EntryAssembly爲MAF的AddIn

我注意到GetEntryAssembly文檔中提到「當託管程序集從非託管應用程序加載時,GetEntryAssembly方法可以返回Nothing」 - 這是否適用於跨AppDomain邊界的MAF代理?

的組件和問題可執行文件都有很強的名稱。

回答

1

你是對的這件事。它確實返回Nothing(null)。

但需要注意的是,在System.Reflection.Assembly.GetEntryAssembly,該「返回值」被描述爲:

的組件,其是默認的應用程序 域的過程的可執行文件,或者,是由 的AppDomain執行第一可執行.ExecuteAssembly

AppDomain.ExecuteAssembly用於執行.NET應用程序的主要方法。在你的情況下,沒有應用程序執行。正在做什麼,解釋here

這是有道理的,因爲那裏是沒有ExecuteAssembly調用返回Nothing(空)。

你爲什麼不使用GetExecutingAssembly呢?