У меня есть неуправляемый внутрипроцессный COM-объект C ++ / ATL (в Unmanaged.dll), который я пытаюсь использовать из управляемой C # DLL (Managed.dll).Тем не менее, я хочу, я хочу использовать регистрацию свободного COMУ меня это до следующих шагов:
- Зарегистрировать объект COM на машине разработки.Внутрипроцессный сервер должен иметь правильно зарегистрированную библиотеку типов.
- Добавить ссылку на COM-объект в проекте C #, а затем установить для свойств ссылки значение Isolated = True.
Это создает Unmanaged.dll, Managed.dll и Native.Managed.manifest.Открыв манифест, довольно ясно, как система использует его для загрузки COM-объекта без регистрации.
В этом и заключается проблема.У меня есть управляемый EXE (Managed.exe), который динамически загружает Managed.dll для доступа к публичным типам.Под «динамически» я подразумеваю, что он использует Assembly.LoadFrom («Managed.dll»).Когда код внутри Managed.dll пытается создать COM-объект, он получает исключение «класс не зарегистрирован».Похоже, что контекст активации не настроен правильно, когда загружается Managed.dll.
Есть ли способ получить бесплатный COM для регистрации для работы в этом сценарии?