У меня есть приложение, которое использует некоторые классы из собственной библиотеки COM в изолированном развертывании.
Упрощено:
Во время выполненияЯ загружаю dll с файлом манифеста в определенный каталог, не регистрируя его.
Затем я создаю контекст активации, указывающий на этот каталог, а затем создаю экземпляры классов из dll.
Допустим, создается класс A, а через некоторое время класс B.
В этом потоке все идет хорошо.
Проблема началась, когда я изменил свое приложение на WinForm.Когда нажата «кнопка 1», я создаю контекст активации, как и раньше, а затем создаю экземпляр класса А. Это работает хорошо, и поток возвращается к моей WinForm.Однако, когда нажата «кнопка 2», я не могу создать класс B. Я получаю исключение, говорящее, что класс не может быть найден!
Так что кажется, что WinForm каким-то образом портит мой контекст активации.
Несколько заметок:
Я попытался выполнить создание контекста активации с помощью sxstrace.exe, однако он регистрировал только мое создание контекста активации.
Я пытался закомментировать Application.EnableVisualStyles (), но это не помогло.
Если я завершаю каждый вызов моей dll в контекст создания и уничтожения, это работает, но, естественно, я не хочу туда идти ...