Если сборка добавлена ​​в GAC, все ли сборки, на которые она ссылается, также должны быть добавлены туда? - PullRequest
3 голосов
/ 09 ноября 2010

Справочная информация:

У меня есть два компонента 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 + - «Невозможно загрузить тип»

1 Ответ

3 голосов
/ 09 ноября 2010

Вы можете заставить свои сборки загружать их зависимые сборки с любого пути установки, который вы выберете:

http://www.chilkatsoft.com/p/p_502.asp

(Нет связи с этой компанией, их пример казался относительно ясным.)

...