Skip to content

Latest commit

 

History

History
55 lines (37 loc) · 6.37 KB

versions.md

File metadata and controls

55 lines (37 loc) · 6.37 KB

Поддерживаемые версии Revit

Надстройка RevitTestHost собирается под Revit с 2020 по 2027. Среда выполнения у этих версий разная, поэтому под каждый год собирается отдельная сборка надстройки: API Revit различается между годами.

Revit Среда выполнения Платформа надстройки Собирается Проверено вживую
2020 .NET Framework 4.7 net47 да да, Revit 2020.2
2021 .NET Framework 4.8 net48 да не проверено
2022 .NET Framework 4.8 net48 да да, Revit 2022.1
2023 .NET Framework 4.8 net48 да не проверено
2024 .NET Framework 4.8 net48 да не проверено
2025 .NET 8 net8.0-windows да да, Revit 2025.1
2026 .NET 8 net8.0-windows да не проверено
2027 .NET 10 net10.0-windows да да, Revit 2027.2

Столбец «Собирается» означает, что надстройка и пример компилируются против Revit API этого года (это проверяет CI). Столбец «Проверено вживую» заполняется по результатам живых прогонов: на отмеченных годах прошли смоук режима сервера и все 18 контрактных тестов RevitUITesting (прогон 2026-10-16, английский интерфейс). Сборка net10.0-windows загружается и работает в Revit 2027.2.

Отличия годов, которые учитывают надстройка и библиотека:

  • Revit 2027 не загружает манифесты надстроек из %ProgramData%, поэтому для 2027 используется папка пользователя %AppData%\Autodesk\Revit\Addins\2027\.
  • В Revit 2025 и новее кнопки вкладок ленты лежат в контейнере mMainTabs, а в дереве UI Automation есть содержимое только активной вкладки (RevitIds.Ribbon.TabStripId, TabContentDepth).
  • В Revit 2025 и новее кнопки встроенных панелей ленты видны снаружи только после того, как внутри процесса созданы peer UI Automation. Это делает надстройка в режиме сервера (AutomationPeerWarmer).

Сборка под нужный год

Год задаёт параметр RevitVersion, платформа выбирается автоматически (таблица в build/RevitVersion.props). Без параметра собирается Revit 2022.

dotnet build src/RevitTestHost.Addin/RevitTestHost.Addin.csproj -c Release -p:RevitVersion=2025

Сборка в конфигурации Debug дополнительно копирует надстройку в %ProgramData%\Autodesk\Revit\Addins\<год>\, для 2027 в %AppData%\Autodesk\Revit\Addins\2027\: Revit 2027 не загружает манифесты из %ProgramData%. В релизе для каждого года есть готовый архив RevitTestHost-Addin-<версия>-Revit<год>.zip, его содержимое распаковывается в ту же папку. Установщик RevitTestHost-Addin-<версия>.msi содержит все годы и ставит надстройку для текущего пользователя в %AppData%\Autodesk\Revit\Addins\<год>\ для каждого установленного Revit.

Для Revit 2020 нужен .NET Framework 4.7.2 или новее (так бывает на любой поддерживаемой Windows 10): SDK собран как netstandard2.0.

Тестовые проекты плагинов

Тестовая сборка должна иметь ту же среду выполнения, что и Revit этого года, и лежать в TestHost\Tests\ с именем *Tests.dll. Пакет RevitTestHost.Sdk (netstandard2.0) подходит для всех годов.

Revit Платформа тестового проекта
2020 net47
2021 до 2024 net48
2025, 2026 net8.0-windows
2027 net10.0-windows

Для нескольких лет сразу укажите несколько платформ в TargetFrameworks.

Как тестовые сборки загружаются на .NET 8 и новее

В Revit 2025 и новее надстройка работает на .NET 8 или .NET 10. Каждая тестовая сборка загружается в собственный контекст загрузки (TestLoadContext). Сборки RevitTestHost.Sdk и RevitTestHost.Core контекст берёт у надстройки, поэтому тестовая сборка и надстройка видят одни и те же типы, даже если рядом с тестами лежит своя копия Sdk. Зависимости тестовой сборки ищутся так: уже загруженное в Revit (RevitAPI и другие сборки Revit), затем .deps.json тестовой сборки, затем файл рядом с ней. В живом Revit 2025 и новее это не проверялось: поведение подтверждено только модульными тестами.

UI-тесты

Библиотека RevitUITesting работает снаружи Revit и не зависит от года на уровне кода. Год задаёт revitVersion в revit-ui-tests.json (или REVIT_UI_REVIT_VERSION), он определяет путь к Revit.exe и ключ реестра доверия к надстройкам. Идентификаторы и подписи интерфейса проверены на Revit 2022.1, на других годах они могут отличаться: это показывают контрактные тесты (Category=RevitContract), которые теперь пишут файлы доказательств <имя>-<год>.txt.