Сообщество программистов Autodesk в СНГ
ADN Club => Другие продукты Autodesk => Navisworks API => Тема начата: Vladislav от 05-06-2020, 22:29:00
-
Добрый вечер! Такой вопрос.
В своем плагине я использую много вспомогательных dll(как управляемых, так и нативных).
Я хочу чтобы всё находилось в одной папке (dll плагина и вспомогательные dll).
C:\Program Files\Autodesk\Navisworks Manage 2019\Plugins\MyPlugin.
Но по умолчанию Нэвис ищет все вспомогательные dll в своем корневом каталоге.
Как мне это изменить?
Внутри метода Execute не получается, потому что исключение выбрасывается раньше его первой команды.
Спасибо.
-
Внутри метода Execute не получается, потому что исключение выбрасывается раньше его первой команды.
В какой момент выбрасывается исключение?
-
Я и сам не пойму. В сообщении написано, что оно в Autodesk.Navisworks.Api.dll.
До точки останова на первой команде метода Execute почему-то не доходит.
-
Я и сам не пойму. В сообщении написано, что оно в Autodesk.Navisworks.Api.dll.
До точки останова на первой команде метода Execute почему-то не доходит.
Сообщение какое? Полностью текст и картинку.
-
Вот оно
-
На вскидку я вижу такое решение:
1. Пишешь плагин-заглушку, который выполняет следующие действия:
2. Находит каталог, в котором он размещен
3. Загружает все вспомогательные dll из каталога и основной плагин. Вполне возможно, что придётся подписаться на событие AssemblyResolve и написать свой обработчик для него: https://docs.microsoft.com/en-us/dotnet/standard/assembly/resolve-loads
4. Запускает метод Execute твоего основного плагина.
-
Vladislav, подскажите, удалось ли вам решить вашу проблему, если да, то каким именно способом?
-
ivmax,
Моей подсказки оказалось недостаточно?
-
Александр,
вашу подсказку мне не удалось реализовать, потому что я не понимаю как это сделать :). Предположил что у Vladislavа есть готовое решение и возможно он им поделится.
-
вашу подсказку мне не удалось реализовать, потому что я не понимаю как это сделать :).
Что именно не удалось понять?
-
вашу подсказку мне не удалось реализовать, потому что я не понимаю как это сделать :).
Что именно не удалось понять?
п2. понятно;
п3. загрузка сборок, предполагаю, происходит методом LoadFrom. Как использовать AssemblyResolve я не понял;
п4. понял только сейчас, что нужно использовать Reflection, верно?
-
п3. загрузка сборок, предполагаю, происходит методом LoadFrom. Как использовать AssemblyResolve я не понял;
Вот приблизительно так: https://adndevblog.typepad.com/autocad/2014/01/pnp3dobjectsmgd-not-found-exception.htmlп4. понял только сейчас, что нужно использовать Reflection, верно?
Можно и через Reflection.