Справочная информация:
У меня есть два компонента COM + на удаленном сервере на основе сборок .NET, один из которых вызывает другой, который, в свою очередь, вызывает частную сборку.
Моя цепочка вызовов выглядит следующим образом;
Клиентский компьютер:
Test Harness -> Инициализирует компонент COM + " TestFirst " через Activator.CreateInstance (...), который маршрутизирует через прокси приложения COM +, а затем вызывает метод в экземпляре.
Удаленный сервер:
TestFirst -> Вызов метода из клиента инициализирует компонент COM + « TestSecond » через «новое» ключевое слово, а затем вызывает метод в экземпляре.
TestSecond -> Вызывает метод класса, содержащегося в закрытой сборке; " TestThird "
Проблема:
Для успешного вызова TestSecond необходимо установить сборку в GAC. В противном случае я получаю эту ошибку;
Невозможно загрузить тип 'TestSecond.TestSecond, TestSecond, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = ...'.
ОК, поэтому я добавляю TestSecond.dll в GAC, а затем ...
Не удалось загрузить файл или сборку 'TestThird, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = ...' или одну из ее зависимостей. Система не может найти указанный файл.
Очевидный ответ здесь - добавить TestThird в GAC, который работает, но я бы предпочел не идти по этому пути. Это всего лишь подтверждение концепции, и фактический проект, который следует этой структуре, имеет много частных ссылок на сборки, и я хотел бы не добавлять их все в GAC, просто чтобы эти компоненты COM + могли их видеть.
Есть ли альтернатива? Возможно, есть какой-то способ связать рабочий каталог с зарегистрированной сборкой GAC?
Примечание: Этот вопрос косвенно связан с другим вопросом, который я задавал в течение недели, но я специально фокусируюсь на разрешении зависимостей установленных сборок GAC.
Компонент COM +, вызывающий другие компоненты COM + - «Невозможно загрузить тип»