How-To: Копировать зависимую сборку, если ее нет в GAC? - PullRequest
1 голос
/ 21 декабря 2008

Я создаю установочный пакет, используя VS2008. Это обычный пакет установки, устанавливающий приложение надстройки COM для Outlook. Пока все работает хорошо. Однако мне нужно немного его улучшить ...

Дело в том, что установочный пакет копирует все зависимые сборки в папку установки надстройки.

Например, надстройка COM зависит от сборки Microsoft.Office.Interop.Outlook.dll. Таким образом, установочный пакет копирует его в свою папку:)

Конечно, я могу переключить свойство Exclude зависимости Microsoft.Office.Interop.Outlook.dll в True, что предотвратит копирование сборки. Однако мне нужно добиться следующего поведения:

  • В случае, если Microsoft.Office.Interop.Outlook.dll отсутствует в GAC, мы просто копируем его в папку установки надстройки
  • В противном случае используйте тот, который находится в GAC

Пожалуйста, предложите, как это можно сделать в .Net 2.0? Будем благодарны за пошаговое руководство.

1 Ответ

2 голосов
/ 21 декабря 2008

Просто всегда копируйте его в папку. Если он уже находится в GAC, сборка GAC все равно будет использоваться первой.

Другими словами, среда выполнения сначала проверяет GAC. Затем проверяет базу приложения и т. Д.

http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx

...