2008-12-16 5 views
0

Я занимаюсь добавлением системы, где основное приложение загружает сборки Addin1.dll и Addin2.dll во время выполнения в новом AppDomain.Как загрузить только подписанную сборку в новый AppDomain?

Однако в случае, если Addin1.dll подписан (сильное имя) с моим ключом и Addin2.dll, нет, я хочу иметь возможность загружать только Addin1.dll и отклонять Addin2.dll.

Я подозреваю, что это нужно сделать, установив некоторые параметры в AppDomainSetup?

ответ

2

Посмотрите на метод Assembly.Load, который принимает параметр Evidence. Вы можете найти пример того, как создавать доказательства из вашего открытого ключа here.

0

Вы можете внедрить DomainManager и основывать свое решение о загрузке/блоке на все, что вам нравится. Я ответил на несколько смежный вопрос here.

0

Вы можете использовать Load method of AppDomain class для загрузки новой сборки в Appdomain при условии, что политика издателя сборки удовлетворена средой клиента или конечного пользователя.

Также сильная именованная сборка соответствует всем правилам, изложенным издателем сборки и CLR. Поэтому пользователь сборки должен удовлетворять аспекту безопасности сборки, загружаемой в appdomain.

Среда CLR загружает глобальную сборку по ссылке из GAC с использованием свойств сильного имени. Если ссылочная сборка доступна в GAC, CLR вернет ее содержащий подкаталог и файл, содержащий манифест, будет загружен. Поиск сборки таким образом гарантирует абоненту, что сборка, загруженная во время выполнения, поступает от того же издателя, который создал сборку, с которой был скомпилирован код. Теперь сравнение токена открытого ключа в таблице assemblyRef сборщика ссылок и токена открытого ключа в таблице AssemblyDef сборной сборки. Если ссылочная сборка не находится в GAC, CLR просматривается в базовом каталоге приложения, а затем в частных путях, указанных в файле конфигурации приложения; если приложение, содержащее сборку, устанавливается с использованием MSI, CLR вызывает MSI для загрузки необходимой сборки. Если сборка не найдена ни в одном из этих местоположений, возникает исключение и, наконец, сбой сборки сбоя.