Использование разных версий одной и той же сборки - PullRequest
2 голосов
/ 21 мая 2010

У меня есть проект, в котором я должен одновременно использовать отчеты, созданные в ActiveReports 2 и ActiveReports 6. В целом, все работает нормально, но некоторые из вспомогательных сборок используют одно и то же имя. Например, чтобы иметь возможность экспортировать в PDF, обе версии используют сборку ActiveReports.PdfExport.dll. Соответствующие сборки, конечно, разные.

Обратите внимание, что я не обращаюсь непосредственно к ActiveReports.PdfExport.dll - это обрабатывается средой выполнения ActiveReports.

Я не могу найти способ включить их обоих в проект. Есть ли способ? Является ли GAC ответом?

Ответы [ 3 ]

6 голосов
/ 21 мая 2010

Создание отдельных внешних псевдонимов для каждой сборки поможет при наличии конфликтов имен типов. Для коллизий имен сборок, посмотрите на ILMerge ; Вы можете комбинировать все связанные сборки вместе. Вы бы создали сборку для ActiveReports 2, которая объединяет все необходимые сборки, а другую - для ActiveReports 6.

1 голос
/ 21 мая 2010

GAC - это один из способов, но у разрешения Fusion достаточно гибкости, что может быть достаточно. Fusion проверит в BaseDirectory имя сборки. [DLL | EXE]. Если он не найден, он будет проверять BaseDirectory \ Name. [DLL | EXE] \ Name. [DLL | EXE]. Таким образом, вы можете избежать создания папки ActiveReports.PdfExport.DLL в папке Bin и выбросить туда старую версию файла.

0 голосов
/ 21 мая 2010

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

Моя идея: создать две библиотеки-помощники, сослаться на каждую сборку, зарегистрировать их в какой-нибудь фабрике или менеджере и вызвать нужную, когда вам нужно.

...