как использовать dll с одинаковым именем в одном приложении

Для создания приложения Autocad я использую C# 4.0.

В моем приложении есть два модуля: один для 2005 г., а другой для 2010 г. autocad. он использует специальные dll AutoCAD, но сталкивается с некоторыми трудностями при его доработке. Все должно быть универсальным для AutoCAD 2005 и 2010, так как dll имеют одинаковое имя, приложение не может различаться версиями AutoCAD. создать проблему для dll autocad interop в ссылке. Помогите мне использовать разные dll для разных модулей.

  1. Приложение имеет два модуля (2005,2010)
  2. Специальная dll
  3. dll 2005 и 2010 имеют одинаковое имя.
  4. Приложение не может распознать dll
  5. Помогите мне использовать разные dll с одинаковым именем в одном приложении.

Примечание. В отдельных проектах они работают идеально.

нужна помощь, чтобы использовать dll с тем же именем в одном приложении.

Если есть какие-либо вопросы, пожалуйста, спросите, заранее спасибо.


person shamim    schedule 21.06.2012    source источник
comment
Оригинальный Android, спасибо за ответ, я буду, я прошу вашей помощи, это зависит от вас, поможете вы или нет, но мне это нужно. Нужна некоторая информация, как использовать GUID для явной загрузки DLL. Еще раз спасибо.   -  person shamim    schedule 21.06.2012


Ответы (1)


У меня похожее приложение, работает для автокада с 2006 по 2013 (и х86 и х64) и для bricscad v12-v13.

Чтобы решить эту проблему, я сделал проект визуальной студии для каждой архитектуры, каждый из этих проектов ссылается на разные .dll в зависимости от версии AutoCAD. В частности, каждый из этих проектов относится к AcDbMgd.dll, AcMgd.dll, Autodesk.AutoCAD.Interop and Autodesk.AutoCAD.Interop.Common, эти dll специфичны для каждой архитектуры AutoCAD.

Вы должны обратить внимание, что все упомянутые dll находятся в локальной копии FALSE!

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

Благодаря тому, что AutoCAD API с 2006 по 2012 год одинаковый (2013 год имеет некоторые отличия), исходный код отделен от этих проектов, каждый проект включает его в виде связанного исходного файла (перейдите к проекту в обозревателе решений -> щелкните правой кнопкой мыши -> добавить существующий элемент -> выберите исходный файл и нажмите «добавить как ссылку»). Таким образом, у вас будет один и тот же исходный код для всех проектов, но они скомпилированы с использованием разных DLL-файлов Autocad.

В моем случае также были некоторые проблемы, потому что BricsCAD иногда имеет другой API по сравнению с AutoCAD. Чтобы решить эти несколько случаев, я установил символ условной компиляции и использовал его так:

#if BricsCad
                CADAPI.ApplicationServices.Application.SystemVariableChanged += new CADAPI.ApplicationServices.SystemVariableChangedEventHandler(Application_SystemVariableChanged);
#else
                CADDB.LayoutManager.Current.LayoutSwitched += new CADDB.LayoutEventHandler(Current_LayoutSwitched);
#endif

Скажите мне, если вам нужна дополнительная информация. Кстати, я думаю, что ваша главная проблема заключается в том, что локальная копия = true для AutoCAD Dll.

person Tobia Zambon    schedule 22.11.2012