Как загрузить только подписанную сборку в новый домен приложений? - PullRequest
0 голосов
/ 16 декабря 2008

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

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

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

Ответы [ 3 ]

2 голосов
/ 16 декабря 2008

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

0 голосов
/ 26 декабря 2011

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

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

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

0 голосов
/ 29 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...