Перечень референсов, подключаемых к проекту

Автор Тема: Перечень референсов, подключаемых к проекту  (Прочитано 5964 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
На https://www.nuget.org не нашёл от Autodesk NuGet-пакетов для Revit 2017. Соответственно, делаю свой. В официальных мануалах вижу информацию, что в процессе разработки, как правило, достаточно подключить RevitAPI.dll и RevitAPIUI.dll. Там же указано, что помимо них, порой, может потребоваться подключение файлов RevitAPIIFC.dll, RevitAPIMacros.dll и RevitAPIUIMacros.dll. Однако в каталоге Revit 2017 я вижу несколько больше файлов, согласно фильтру RevitAPI*.dll:



На скрине я подсветил те, которые в доках обозначены в качестве подключения. Могут ли мне, как разработчику планинов под Revit понадобиться и др. файлы, не подсвеченные на скрине (а может и вообще на нём отсутсвующие)? Если да, то какие? Хочу в NuGet-пакет включить всё, что может понадобиться.

P.S.
Кстати, у Revit 2017 весьма странный SDK: по завершению работы соответствующего MSI в каталоге установке SDK, по фильтру RevitAPI*.dll не нахожу ничего, приходится копировать эти файлы с компьютера, где Revit 2017 реально установлен.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Глухо как в танке... Ок, в пакет засунул только рекомендуемые в мануалах. Результат здесь: https://www.nuget.org/packages/Revit-2017x64.Base/1.0.0

Пакет подключает к проекту файлы RevitAPI.dll, RevitAPIUI.dll, RevitAPIIFC.dll, RevitAPIMacros.dll, и RevitAPIUIMacros.dll. В процессе подключения обозначенных сборок, пакет назначает их свойству Copy Local значение False.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Андрей, За весь свой опыт работы, сборки RevitAPIIFC.dll, RevitAPIMacros.dll и RevitAPIUIMacros.dll никогда не приходилось подключать. Иногда приходилось подключать сборки AdWindows.dll и UIFramework.dll. Но их использование, как и остальных сборок по маске RevitAPI* - недокументировано,  поэтому использование на свой страх и риск.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Иногда приходилось подключать сборки AdWindows.dll и UIFramework.dll.
Ок, включу их так же в состав NuGet-пакета, но позднее, в следующей версии. Пока мне достаточно текущей его реализации.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Кстати, у Revit 2017 весьма странный SDK: по завершению работы соответствующего MSI в каталоге установке SDK, по фильтру RevitAPI*.dll не нахожу ничего, приходится копировать эти файлы с компьютера, где Revit 2017 реально установлен.
Собственно во всех уроках так и пишут, что нужно подключить сборки RevitAPI из папки, где установлен Revit. Не ясно зачем их куда то копировать.
Да и это правильно. Только так можно быть уверенным, что используемые методы действительно содержатся в сборке RevitAPI, с той, с которой работает сам Revit. В противном случае, можно нарваться на ситуацию, когда версия скопированных dll будет несовместима с версией Revit. Думаю именно поэтому никто и не делал сборки для nuget

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Не ясно зачем их куда то копировать.
Существует такой способ тестирования и отладки кода: называется Remote Debugging. В этом случае на машине разработчика присутствует только софт, предназначенный для разработки и набор необходимых SDK. Целевые приложения, под которые пишется код, размещены на др. машинах.

Да и это правильно.
Выше я указал причину, почему это как раз-таки неправильно. Кстати, SDK для AutoCAD такого косяка не имеет - все необходимые заглушки присутствуют в составе SDK. Хочешь сказать, что это неправильно? :) Вопрос риторический.

В противном случае, можно нарваться на ситуацию, когда версия скопированных dll будет несовместима с версией Revit.
Нельзя на неё нарваться, если глаза на месте: версии целевых приложений, как правило, указываются в наименованиях NuGet-пакетов. Кстати, в своих кривых NuGet-пакетах, которые Autodesk выпускает для AutoCAD они в названии пакетов как раз и указывают целевые версии AutoCAD. Ничто не мешает делать то же самое и для Revit.

Думаю именно поэтому никто и не делал сборки для nuget
Поскольку все процитированные мною выше аргументы не соответствуют действительности, то и данная логика в этом случае не работает. Да я и не спрашивал причину отсутствия оных, т.к. она для меня и так вполне очевидна...