Вот я чет не пойму.
Из проги написанной на managed С++ загружаю сборку (созданную на C# в MSVC ввиде *.dll),
Assembly * assembly = AppDomain::CurrentDomain->Load( name );
создаю instance класса который есть в этой сборке (все че мне нужно работает в конструкторе)
Object * m_curScript = assembly->CreateInstance( type_name );
потом вижу что класс работает не так как мне нужно и я хочу выгрузить эту сборку, исправить, пересобрать, и заново загрузить,
не выходя из основной программы (которя на managed С++). Но как это сделать я так и не нашел, даже когда вызываю
AppDomain::CurrentDomain->UnLoad();
все равно сборка удерживается и я не могу ее перезаписать.
Неужели нет способа также легко работать с NET сборками как с обычными Dll (типа загрузил, выполнил что надо, и выгрузил)?
Заранее спасибо.
"Mab" <9336@users.rsdn.ru> wrote in message
news:1758518@news.rsdn.ru...
> http://www.rsdn.ru/search/?q=%EA%E0%EA+%E2%FB%E3%F0%F3%E7%E8%F2%FC+%F1%E1%EE%F0%EA%F3&mode=rank&group=N
На самом деле можно. Но сложно

Для этого надо загружать сборку в отдельный appdomain и вот его-то и
выгружать.
Если необходимо выгрузить сборку из текущего запущенного домена приложения —
это невозможно, менеджить можно созданные программно домены .
--
Best regards, Harley
Posted via RSDN NNTP Server 2.0
" Аноним " <0@users.rsdn.ru> wrote in message
news:1758516@news.rsdn.ru...
> Вот я чет не пойму.
> Из проги написанной на managed С++ загружаю сборку (созданную на C# в MSVC
> ввиде *.dll),
>
> > Assembly * assembly = AppDomain::CurrentDomain->Load( name );
>
> создаю instance класса который есть в этой сборке (все че мне нужно
> работает в конструкторе)
> > Object * m_curScript = assembly->CreateInstance( type_name );
>
>
> потом вижу что класс работает не так как мне нужно и я хочу выгрузить эту
> сборку, исправить, пересобрать, и заново загрузить,
> не выходя из основной программы (которя на managed С++). Но как это
> сделать я так и не нашел, даже когда вызываю
> > AppDomain::CurrentDomain->UnLoad();
>
> все равно сборка удерживается и я не могу ее перезаписать.
>
> Неужели нет способа также легко работать с NET сборками как с обычными Dll
> (типа загрузил, выполнил что надо, и выгрузил)?
Сорри не заметил изначального поста.
Можно посоветовать загрудать сборку по-другому, чтобы не лочился файл.
можно ее прочитать в byte[] и загрузить из byte[].
Но — если сборка использует свойство Assembly.Location — то могут быть
проблемы, т.к для сборок загруженных из byte[] это свойство будет null.
--
Best regards, Harley
Posted via RSDN NNTP Server 2.0