Если просто компилировать оконное приложение, то всё норм.Потому что эта dll-ка лежит рядом с exe-файлом. С AutoCAD'ом так не получится - нужно его самостоятельно загрузить, так как AutoCAD его не найдёт.
Аналогичная тема: https://adn-cis.org/forum/index.php?topic=1876.0Большое спасибо за наводку. Понял свою ошибку при поисковом запросе и ничего, пока что, не понял в решении проблемы :)
Если я правильно понял, то Автокад хочет, чтобы я помимо сборки моего проекта грузил ему, через команду "NETLOAD", вот эту библиотеку "GongSolutions.WPF.DragDrop", которую я использую в своём проекте? И решение проблемы состоит в том, чтобы отловить событие "AppDomain.AssemblyResolve" и понему автоматически загрузить эту библиотеку?Нет. Ты понял неправильно. Когда идёт обращение "GongSolutions.WPF.DragDrop" из твоего dll-приложения, .NET Framework пытается его найти и найти не может. Тебе нужно ему подсказать где оно находится, а точнее загрузить его. В принципе ты можешь для начала попробовать загрузить его при помощи Assembly.LoadFile в методе Initialize. Если это не поможет, то в методе Initiliaze подписывайся на событие AssemblyResolve и в нём, если ResolveEventArgs.Name равно "GongSolutions.WPF.DragDrop", то загружай при помощи Assembly.LoadFile эту сборку и возвращай её из этого события.
Хм, так, получается, что это решение может подойти и для этой проблемы: https://adn-cis.org/forum/index.php?topic=7885.0 ?Думаю да.
если я свою готовую dll перенесу на другой комп, придётся таскать эту библиотеку везде со своим файлом?Конечно придётся. Если эта сторонняя библиотека, которой нет ни в AutoCAD, ни среди библиоток .NET Framework.
Я решил проблемуКаким образом?
Каким образом?Как Вы подсказали. Попробовал использовать эвент, грузил напрямую
Но если таскать стороннюю библиотеку, то не проще ничего не писать в коде, а разместить стороннюю библиотеку в папке "C:\Program Files\Autodesk\ApplicationPlugins\.bundle" и прописать, что нужно в файле "PackageContents.xml"?А причем здесь одно к другому? В коде все-равно придётся писать. И таскать эту стороннюю библиотеку.
А причем здесь одно к другому? В коде все-равно придётся писать. И таскать эту стороннюю библиотеку.Так я писал про то, что не проще в своём бандле разместить все необходимые библиотеки, чем писать в коде проверку на подключение модулей или подключать их вручную?
Я вот сейчас проверил, сделал бандл "TEST.bundle", кинул в папку "content" dll моего проекта и dll "GongSolutions.WPF.DragDrop", прописал всё в "PackageContents", и всё заработало без лишних строк в коде проекта.Это работает не всегда и не во всех версиях AutoCAD. Так что рекомендую код загрузки оставить. Он будет срабатывать только если эта библиотека не будет найдена.
прописал всё в "PackageContents"???
Lemieux,Файл "PackageContents.xml", с описанием бандла.
Стоп! А что ты подразумевал подпрописал всё в "PackageContents"???
Файл "PackageContents.xml", с описанием бандла.Что такое PackageContents.xml я прекрасно знаю уже 9 лет (с момента, когда он появился в AutoCAD 2012). Я имел в виду что именно ты прописал в нём? Уточню вопрос. Ты прописал в <ComponentEntry ...> GongSolutions.WPF.DragDrop ? Теоретически это возможно.
Ты прописал в <ComponentEntry ...> GongSolutions.WPF.DragDrop ?Совершенно верно.
Как я понимаю, если я напишу свою библиотеку классов и буду её подключать, то у меня примерно такая же ошибка будет вылетать и мне надо будет везде таскать свою библиотеку?Протестировал - да, такая же проблема, либо я что-то не так делаю. Решил, что пока малое количество наработок буду пользоваться шаблонами итемов visual studio и загружать их в проекты, когда понадобятся.