Как выгрузить домен по умолчанию .NET AppDomain из неуправляемого приложения

StackOverflow https://stackoverflow.com/questions/2330390

Вопрос

Есть ли способ выгрузить значение по умолчанию .NET AppDomain из неуправляемого приложения?

Я использую сторонний инструмент под названием Расширитель .NET для использования .СЕТЕВЫЕ сборки из Visual FoxPro, которые позволяют мне размещать .Элементы управления NET, а также использовать классы и методы .NET из среды FoxPro.

Проблема, с которой я сталкиваюсь, заключается в том, что при отладке приложения из Visual FoxPro оно запускает все под основным vfp9.exe файл приложения для IDE, и кажется, что дескрипторы для моих управляемых сборок не выпущены.Поэтому, когда я вношу изменения в эти сборки .NET и хочу их обновить, я должен закрыть VFP IDE и снова открыть ее, в противном случае я получаю нарушение общего доступа при попытке перезаписать файлы.

Я начал изучать способы обеспечения того, чтобы элементы управления были удалены, но затем я наткнулся эта статья Рика Страла где он в основном описывает, что проблема на самом деле заключается в том, что основной домен приложения не выгружен.Просмотрев информацию о том, как выгрузить AppDomain по умолчанию, я пришел к выводу, что это невозможно, по крайней мере, из управляемого приложения, но возможно ли это для неуправляемого приложения.Я думаю, что только потому, что неуправляемое приложение использовало ресурс .NET, ему не нужно продолжать носить с собой багаж AppDomain и Runtime.

Это было полезно?

Решение

На этот вопрос был дан ответ на Форумы MSDN и, к сожалению, похоже, что это невозможно и что процесс должен быть завершен, чтобы освободить ресурсы, включая домены приложений.Это описано в документация для ICLRRuntimeHost.Stop метод интерфейса, в котором указано "Этот метод не освобождает ресурсы хосту, не выгружает домены приложений и не уничтожает потоки.Вы должны завершить процесс, чтобы освободить эти ресурсы ".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top