Пути поиска dll в Revit

Автор Тема: Пути поиска dll в Revit  (Прочитано 2709 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Пути поиска dll в Revit
« : 04-03-2019, 15:54:19 »
Добрый день.
Возник следующий вопрос. В своем плагине я опосредовано использую ряд неуправляемых библиотек (они используются через управляемые обертки).
Всё хорошо работает, но есть нюанс. Эти неуправляемые библиотеки должны лежать строго в корневой папке Revit.
Мне же хотелось бы поместить их в папку AddIns либо еще куда-то.
В связи с этим вопрос. Можно ли как-то, использую Revit API, изменить путь, по которому Revit ищет dll?
Благодарю за ответы и информацию.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Пути поиска dll в Revit
« Ответ #1 : 04-03-2019, 15:56:55 »
Можно ли как-то, использую Revit API, изменить путь, по которому Revit ищет dll?
Нет конечно
Мне же хотелось бы поместить их в папку AddIns либо еще куда-то.
В своем плагине грузите нужные вам библиотеки (до первого их вызова) через Assembly.LoadFrom() и не важно тогда где они лежат

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Пути поиска dll в Revit
« Ответ #2 : 04-03-2019, 16:01:28 »
Таким методом можно грузить и неуправляемые dll?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Пути поиска dll в Revit
« Ответ #3 : 04-03-2019, 16:04:26 »
Таким методом можно грузить и неуправляемые dll?
Вот тут не скажу точно. Нужно читать MSDN или подождать ответа того, кто более в теме. Ну или просто попробовать. Мне кажется, что должно сработать
То, что либы ищутся рядом - это вообще к Ревиту не относится - это так работает CLR. Кстати, через файл конфигурации можно переносить зависимые либы в подпапку той же папки

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Пути поиска dll в Revit
« Ответ #4 : 04-03-2019, 16:50:39 »
В своем плагине грузите нужные вам библиотеки (до первого их вызова) через Assembly.LoadFrom() и не важно тогда где они лежат

В качестве альтернативы можно подписаться на событие AppDomain.CurrentDomain.AssemblyResolve

Только это всё для управляемого кода.

Как сделана managed-обёртка у Вас я не в курсе. Если работаете с помощью DllImport, то можно в конструктор можно передать полный путь к dll-ке, либо вот как в MSDN:
Цитировать
If an unmanaged DLL file is included in an assembly, for example, by using the linker or the /linkresource compiler option, you can specify the assembly display name as part of dllName. For example, if an unmanaged DLL named unmanaged.dll is included in a managed assembly named MyAssembly, the attribute might be specified as shown in the following code:

Код - C# [Выбрать]
  1. [DllImport("unmanaged.dll, MyAssembly, Version= 1.0.0.0," +
  2.  "Culture=neutral, PublicKeyToken=a77e0ba5eab10125")]
  3. static extern int SomeFuncion1(int parm);