C#: можно ли выгрузить сборку принудительно?

yolki

В продолжение моих постов про внедрение ActiveX на формочку.
Решение с WebBrowser работает.
Есть нюанс: эта зараза не подходит к повторному использованию - одноразовая. Если нужно некоторые действия сделать на другой манер - она просто играет в молчанку. В эксплорере та же фигня - но там просто лечится переоткрытием окна.
я пробовал WebBrowser создавать в динамике - не получилось, поведение тоже самое. Пробовал огородить его в AppDomain - эффект тот же самый.
Судя по отладчику, после загрузки/выгрузки дочернего AppDomain-а, сборка, ответственная за WebBrowser, почему-то загружается и в родительский аппдомен (mshtml.dll).

Dasar

сборку нельзя, только AppDomain целиком.
Грузи в отдельный процесс.

yolki

это нормально, что dll-ки из дочернего AppDomain-а просачиваются в родительский?

Dasar

это нормально, что dll-ки из дочернего AppDomain-а просачиваются в родительский?
такого не должно быть

yolki

Мне ещё не понятно, как так получается, что у меня приложение на сишарпе, AnyCPU, 64-битное. а ActiveX-контрол 32-битный грузится в WebBrowser.
:confused:

Dasar

Мне ещё не понятно, как так получается, что у меня приложение на сишарпе, AnyCPU, 64-битное. а ActiveX-контрол 32-битный грузится в WebBrowser.
Предполагаю, что установлен флаг "Prefer 32-bit". В этом случае AnyCpu запускается как 32-битное

zorin29

это нормально, что dll-ки из дочернего AppDomain-а просачиваются в родительский?
Так может произойти, если случайно обратиться к манифесту этой dll-ки из родительского AD. Например, ты создал объект в другом AppDomain, затем переслал его в родительский AppDomain и вызвал у него GetType. При этом, кажется, .NET загрузит dll-ку в родительский домен.

agaaaa

Запускай отдельный инстанс приложения и общайся с ним через ремоутинг.

Dasar

что у меня приложение на сишарпе, AnyCPU, 64-битное.
Проверь, что показывает TaskManager. Если есть суффикс '*32', то приложение запускается как 32-битное.
Оставить комментарий
Имя или ник:
Комментарий: