EntryAssembly для MAF AddIn - PullRequest
       23

EntryAssembly для MAF AddIn

1 голос
/ 30 декабря 2011

Есть ли способ настроить надстройки MAF так, чтобы System.Reflection.Assembly.GetEntryAssembly () возвращала ссылку на основную сборку надстройки при вызове изнутри AppDomain надстройки?

Предыстория: чтобы соответствовать определенным требованиям безопасности для моего проекта, я должен загрузить надстройки в отдельном домене приложений, и результат GetEntryAssembly () должен быть установлен в основную сборку надстройки (со строгим именем) при вызове изнутри домена приложения надстройки.Я разработал тестовый пример, следуя шаблону, описанному в пошаговом руководстве MSDN MAF .В моем тестовом случае GetEntryAssembly () всегда возвращает ноль, если сборка загружена в отдельный домен приложений (или процесс).

Я заметил, что документация GetEntryAssembly говорит: «Метод GetEntryAssembly ничего не может вернуть, когда управляемая сборка была загружена из неуправляемого приложения» - это относится к прокси MAF через границы AppDomain?

все рассматриваемые сборки и исполняемые файлы имеют строгие имена.

1 Ответ

1 голос
/ 09 апреля 2012

Вы правы по этому поводу. Он ничего не возвращает (ноль).

Но обратите внимание, что в System.Reflection.Assembly.GetEntryAssembly «Возвращаемое значение» описывается как:

Сборка, которая является исполняемым файлом процесса в приложении по умолчанию домен, или первый исполняемый файл, который был выполнен AppDomain.ExecuteAssembly

AppDomain.ExecuteAssembly используется для выполнения основного метода приложения .NET. В вашем случае ни одна заявка не выполняется. Что делается, объясняется здесь .

Имеет смысл возвращать Nothing (null), поскольку не было никакого вызова ExecuteAssembly.

Почему бы вам не использовать GetExecutingAssembly вместо этого?

...