2009-09-17 2 views
0

Я пытаюсь развернуть какую-то структуру и, следовательно, нужно зарегистрировать некоторые сборки в GAC.Возможно ли установить сборку в GAC как какую-то «связанную сборку»?

Интересная часть: Эти сборки GAC должны использоваться разработчиком фреймворка, клиентские приложения не должны использовать эти сборки GAC, а те, которые находятся в их локальных каталогах (сборки GAC могут быть разных версий, большинство вероятно, выше).

Я уже нашел и попробовал настройку app.config, но, похоже, клиентское приложение игнорируется (последняя версия .NET установлена ​​на 3.5).

+0

Чтобы уточнить: ваша инфраструктура будет ссылаться на версию 2.0.0.0 «AssemblyA.dll» (например), которая будет в GAC, в то время как ваши клиенты будут ссылаться на фреймворк И другой версии (скажем, 1.0. 0.0) 'AssemblyA.dll'? –

+0

Я не понимаю - вы говорите, что разработчики должны строить против сборок в GAC, но клиентское приложение должно работать против сборок в локальном каталоге? – Justin

+0

Я не понимаю, почему что-то должно быть в GAC. Почему разработчики фреймворка помещают в GAC именно то, что они разрабатывают? Возможно, я не понимаю вашу проблему ...? –

ответ

0

Поскольку вы будете загружать две разные версии данных dll в память, вам необходимо их изолировать. общие методы;

  1. Создание AppDomain. Вы создаете две библиотеки dll. Первая dll создает новый AppDomain из вашего кода, а затем загружает вторую dll, связанную с этими зависимостями.
  2. Используйте сервисный процесс. Вы создаете одну dll и приложение-службу. DLL запускает сервисное приложение в новом процессе и соединяется с использованием, например, Remoting. Приложение-служба привязана к компонентам, к которым необходимо привязать.