Как я могу получить «родную» DLL, которая использует C ++ / CLI для запуска управляемого кода в частном домене приложений? - PullRequest
0 голосов
/ 01 сентября 2018

«Родной» в кавычках в заголовке объясняется тем, что я не уверен, что точно понимаю, что происходит, когда вы связываете «нормальные» объектные файлы C ++ с файлами C ++ / CLI в DLL.

У меня есть такая DLL, только с собственными точками входа.

Обнаружена проблема с продуктом, когда при загрузке DLL управляемым приложением, использующим несколько доменов приложений, возникают ошибки, поскольку нативный компонент, вызываемый через P / Invoke управляемым потоком приложения, пытается использовать управляемый объект, принадлежащий другому домену приложений (который, как оказалось, был создан на том же домене приложений, в котором находился поток, который изначально вызвал загрузку DLL).

Так как эта DLL предназначена только для использования через ее собственные точки входа, я думаю, что самый простой способ решить эту проблему - это изолировать «внутренний» управляемый код DLL от остальной части приложения, запустив его в собственный частный домен приложений.

Как бы мне этого добиться?

Я видел http://lambert.geek.nz/2011/12/appdomains-and-unmanaged-callbacks-redux/,, но в идеале я мог бы каким-то образом пометить всю DLL, чтобы она просто «работала», не требуя от меня рефакторинга большого количества кода.

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