Перезавантаження монодомену або збірок

Ми розробляємо гру та використовуємо C # та C ++ за допомогою mono.

монодомену

Ми використовуємо два dll; Dll1 і Dll2. Під час виконання я хочу змінити (оновити) ці dll без перезапуску гри (що триває деякий час). Ось код, який ми використовуємо:

mono_world_assembly = mono_domain_assembly_open (mono_domain, Dll1);
mono_world_image = mono_assembly_get_image (mono_world_assembly);

mono_module_assembly = mono_domain_assembly_open (mono_domain, Dll2);
mono_module_image = mono_assembly_get_image (mono_module_assembly);

Я спробував два різні шляхи, але жоден з них не був успішним. Я навіть не знаю, в чому точна помилка, оскільки я не знаю, як налагодити моно в C++.

Перший підхід полягав у використанні mono_jit_cleanup, а потім при перекомпіляції dll використовуйте наведений вище код для перезавантаження dll.

Другий підхід полягав у тому, щоб закрити збірки та зображення та знову відкрити їх при заміні DLL-файлів.

Чи припустився я помилки та/або є спосіб зробити це?

Як тільки збірка була JITed (що в основному означає, що
був використаний один із його методів), немає можливості його змінити.

Є два способи перезавантажити збірку:

1) змініть назву збірки та завантажте знову. Зауважте, що це
не буде розвантажувати/випускати типи, передбачені попередньою збіркою,
а також типи перезавантаженого вузла не сумісні з типом
Перший. Іншими словами: не робіть цього, якщо не зробили цього
зрозумів ці недоліки.

2) Використовуйте домени додатків, які можна вивантажити разом
їх збірки за проектом.

Це загальний шаблон у слові .NET, і він може бути