Использование разных версий одной сборки

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

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

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


person AngryHacker    schedule 20.05.2010    source источник


Ответы (3)


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

person Jordão    schedule 21.05.2010

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

person Paul Alexander    schedule 21.05.2010

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

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

person abatishchev    schedule 20.05.2010