Найти в Дзене
IT4BIM

Настройка проекта для разработки плагинов под Revit: SDK, конфигурация, анализаторы

При разработке плагинов для Autodesk Revit часто возникает необходимость поддержки нескольких версий программы, а также соблюдения актуальных стандартов разработки. Перевод проекта в SDK-стиль, обновление версии языка C# и настройка сборки под разные версии Revit помогут упростить процесс разработки, сделать код чище и повысить его читаемость. В данной статье рассмотрим основные шаги по модернизации проекта из прошлой статьи: Следуя этим шагам, вы сможете создать удобную и гибкую структуру проекта, которая облегчит его поддержку и развитие в будущем. Если у вас не установлена нужная версия .NET SDK, которая необходима чтобы собрать проект под Revit, то её можно добавить через Visual Studio Installer. 1. Открытие Visual Studio Installer 2. Выбор и установка нужных версий .NET SDK Теперь ваш SDK обновлён, и можно переходить к следующему шагу — переводу проекта в SDK-стиль. Перевод проекта в SDK-стиль делает файл .csproj чище и удобнее для поддержки. В SDK-формате пропадает избыточное опи
Оглавление

Введение

При разработке плагинов для Autodesk Revit часто возникает необходимость поддержки нескольких версий программы, а также соблюдения актуальных стандартов разработки. Перевод проекта в SDK-стиль, обновление версии языка C# и настройка сборки под разные версии Revit помогут упростить процесс разработки, сделать код чище и повысить его читаемость.

В данной статье рассмотрим основные шаги по модернизации проекта из прошлой статьи:

  • Обновление версии SDK;
  • Перевод проекта в SDK-стиль;
  • Настройка поддержки нескольких версий Revit;
  • Обновление версии языка C#;
  • Решение проблем с архитектурой проекта;
  • Подключение анализатора кода StyleCop.

Следуя этим шагам, вы сможете создать удобную и гибкую структуру проекта, которая облегчит его поддержку и развитие в будущем.

Обновление версии SDK через Visual Studio Installer

Если у вас не установлена нужная версия .NET SDK, которая необходима чтобы собрать проект под Revit, то её можно добавить через Visual Studio Installer.

1. Открытие Visual Studio Installer

  • Откройте Visual Studio Installer (можно найти через поиск Windows).
  • В списке установленных версий Visual Studio нажмите "Изменить”.

2. Выбор и установка нужных версий .NET SDK

  • Перейдите на вкладку "Рабочие нагрузки" (Workloads).
  • Найдите раздел "Разработка классических приложений .NET" и убедитесь, что он установлен.
  • Переключитесь на вкладку "Отдельные компоненты" (Individual Components).
  • В разделе .NET найдите и выберите нужные версии SDK и установите их:
  • .NET Framework 4.7.2 или 4.8 (для Revit 2017–2019)
  • .NET Framework 4.8 (для Revit 2020–2023)
  • .NET 8.0 (Windows) (для Revit 2025 и новее)

Теперь ваш SDK обновлён, и можно переходить к следующему шагу — переводу проекта в SDK-стиль.

Перевод проекта в SDK-стиль

Перевод проекта в SDK-стиль делает файл .csproj чище и удобнее для поддержки. В SDK-формате пропадает избыточное описание сборок и ссылок, а также появляются современные механизмы управления зависимостями.

1. Установка необходимых расширений

Перед тем как перевести проект в SDK-стиль, убедитесь, что у вас установлено расширение "Project System Tools".

Как установить расширение

  1. Закройте Visual Studio, если он был ранее открыт.
  2. Загрузите расширение - SDKUpdater
  3. Установите расширение и откройте Visual Studio.

2. Перевод проекта в SDK-стиль

После установки расширения можно выполнить перевод проекта:

1. В Обозревателе решений (Solution Explorer) найдите нужный проект.

2. Нажмите на проект правой кнопкой мыши (ПКМ).

3. Выберите Upgrade

4. Выберите "Convert project to SDK-style".

5. После завершения конвертации можно откройте .csproj и убедитесь, что он стал проще, для этого можно использовать ПКМ и в контекстном меню выбрать Edit project file.

Настройка поддержки нескольких версий Revit

Для работы с разными версиями Revit в одном проекте требуется настроить .csproj так, чтобы он поддерживал компиляцию под Revit 2017–2025. Также необходимо правильно задать параметры запуска и учитывать ограничения пакетной сборки (Batch Build). Более детально с файлом проекта и файлом решения можно ознакомиться по ссылкам csproj и sln

1. Изменение .csproj для поддержки версий 2017–2025

В .csproj нужно добавить отдельные конфигурации для каждой версии Revit. Это позволит компилировать проект под нужную версию, а также запускать Revit с соответствующими параметрами.

Пример конфигурации для Revit 2021 и 2025:

-2
-3

Важно:

  • Для Revit 2017–2022 используется net4x. Более детально смотри в файле csproj
  • Для Revit 2025+ требуется net8.0-windows.

Так же через менеджер конфигураций решения нужно добавить новые конфигурации

-4

После добавления всех версий (2017–2025) можно переключаться между ними в конфигурациях сборки в Visual Studio.

2. Разбор параметров конфигурации

· Condition – Указывает, при каком сочетании конфигурации (R18_Debug|AnyCPU) применяются эти настройки.

· DebugSymbols – Включает или отключает генерацию отладочных символов. В Debug-конфигурации установлено true, что позволяет использовать точки останова и проводить отладку.

· Optimize – Определяет, будет ли компилятор оптимизировать код. В Debug установлено false, чтобы упростить отладку. В Release-сборках значение будет true.

· TargetFramework – Версия .NET Framework, под которую собирается проект. Для Revit 2018 используется net46.

· OutputPath – Папка, куда будет собираться скомпилированный код. Например, для этой конфигурации файлы будут попадать в bin\R18_Debug\.

· DefineConstants – Определяет константы, которые можно использовать в коде для условной компиляции. Например, здесь задано DEBUG;R18, что позволяет использовать директивы #if R18.

· AppendTargetFrameworkToOutputPath – Отключает автоматическое добавление версии TargetFramework в путь сборки, чтобы структура папок оставалась предсказуемой.

· StartAction – Указывает, что при запуске проекта в Visual Studio должен запускаться Revit.

· StartProgram – Полный путь к исполняемому файлу Revit 2018 (C:\Program Files\Autodesk\Revit 2018\Revit.exe).

· StartArguments – Аргументы командной строки, передаваемые Revit при запуске. В данном случае используется Runner.txt – VBA скрипт запуска ПО, который может задавать параметры для автоматического выполнения команд.

3. Выбор Nuget-пакета в зависимости от версии Revit

При работе с разными версиями Revit важно учитывать, что API может изменяться от версии к версии. Чтобы обеспечить совместимость, в проекте используются разные версии пакета Revit_All_Main_Versions_API_x64, в зависимости от конфигурации сборки.

Структура конфигурации NuGet-зависимостей

В .csproj файле в секции <ItemGroup> можно задать зависимости следующим образом:

-5

· Каждая версия Revit_All_Main_Versions_API_x64 подключается условно, используя Condition="$(Configuration.Contains('RXX'))", где RXX — версия Revit.

· Это позволяет подключать только нужную версию API в зависимости от выбранной конфигурации сборки, что уменьшает вероятность конфликтов между версиями.

API Revit может меняться между версиями, поэтому код может потребовать модификации при обновлении. И для решения можно использовать директивы условной компиляции:

-6

4. Описание Batch Build и его ограничений

Batch Build позволяет собрать проект сразу для нескольких конфигураций (версий Revit).

Чтобы использовать Batch Build:

  1. В Visual Studio откройте Build → Batch Build.
  2. Выберите конфигурации (например, R17_Release, R18_Release, R25_Release).
  3. Нажмите Build.

Однако есть ограничение: Build может работать некорректно при смене версии версии фреймворка например с .NET Framework 4.6 на NET Framework 4.7

Подробнее об этой проблеме: GitHub Issue. С радостью бы услышал решение данной проблемы и дописал в этой статье!

Актуализация версии языка C#

При работе с .NET важно использовать актуальную версию языка C#, так как это позволяет применять новые синтаксические возможности, улучшать читаемость кода и повышать производительность. В данном случае обновление версии C# до 13.0 даст доступ к последним улучшениям.

Как задать версию C# в проекте?

Чтобы явно указать используемую версию языка, нужно в .csproj файле в общей секции <PropertyGroup> добавить следующий параметр:

-7

Это укажет компилятору использовать C# 13, даже если среда разработки по умолчанию настроена на более старую версию.

За одно в этом же блоке рекомендую указать ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch – None, чтобы убрать ошибки о несоответствии архитектуры сборки.
Так же нужно учесть что при смене SDK Стиля события до и после сборки надо тоже поправить

События до сборки:

if not exist "$(MSBuildProjectDirectory)\bin\$(Configuration)\BimExamples.addin" copy "$(MSBuildProjectDirectory)\BimExamples.addin" "$(MSBuildProjectDirectory)\bin\$(Configuration)\"

if not exist "$(MSBuildProjectDirectory)\bin\$(Configuration)\Runner.txt" copy "$(MSBuildProjectDirectory)\Runner.txt" "$(MSBuildProjectDirectory)\bin\$(Configuration)\"

События после сборки:

for %%f in ("$(MSBuildProjectDirectory)\$(OutputPath)*journal*.*") do del "%%f"

Добавление анализатора кода (StyleCop)

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

1. Установка пакета StyleCop.Analyzers

1. Открыть "Управление пакетами NuGet" для проекта.

2. В поле поиска ввести StyleCop.Analyzers.

3. Выбрать последнюю стабильную версию и нажать Установить.

2. Создание файла stylecop.json и его настройка

По умолчанию StyleCop имеет строгие правила форматирования, но их можно изменить, создав файл конфигурации stylecop.json.

Создание файла:

  1. В корне проекта (или в папке Properties) создать файл stylecop.json.

2. Вставить в него следующую базовую настройку stylecop.json:

-8

3. И в свойствах файла указать Build action - C# analyzer additional file.

-9

3. Проверка работы анализатора

После установки и настройки анализатора Visual Studio начнет подсвечивать ошибки и предупреждения, связанные с оформлением кода.

Как проверить?

  • Навести курсор на предупреждение — появится описание проблемы и предложенный вариант исправления.
  • В меню "Быстрые действия" (Ctrl + .) можно применить автоисправление.
  • Например, если класс не содержит заголовка, StyleCop предложит его добавить автоматически.

Пример исправления ошибки

StyleCop может выдавать предупреждение:

-10

Чтобы исправить можно добавить комментарий. В данном случае используем inheritdoc тк метод описан в реализуемом методе.

-11

Рекомендации

  • Файл stylecop.json можно редактировать в зависимости от требований проекта. Например, можно изменить порядок using-директив, включить/отключить документацию или задать дополнительные правила форматирования.
  • Полный список поддерживаемых правил можно найти в официальной документации:
    🔗
    Документация StyleCop Analyzers
  • Пример проекта с готовым конфигом можно посмотреть здесь:
    🔗
    Пример проекта

Четких рекомендаций тут не будет, думайте сами что для вас является нормой и под свое чувство прекрасного настраивайте анализатор)

Вывод

  1. StyleCop.Analyzers помогает улучшить качество кода, следуя строгим правилам форматирования.
  2. Файл stylecop.json позволяет настроить анализатор под нужные стандарты.
  3. После настройки анализатор начинает автоматически проверять код и предлагать исправления.

Использование StyleCop делает код более читаемым, единообразным и соответствующим принятым стандартам разработки.

Вывод

В этой статье мы разобрали ключевые шаги по настройке проекта для работы с Revit, включая:

Обновление версии SDK — почему это важно и как выполнить через Visual Studio Installer.
Перевод проекта в SDK-стиль — преимущества нового формата и процесс конвертации.
Настройку поддержки нескольких версий Revit — конфигурацию .csproj и параметров запуска.
Выбор и подключение NuGet-пакетов в зависимости от версии Revit.
Актуализацию версии C# и решения проблем совместимости архитектуры.
Добавление и настройку анализатора кода (StyleCop) для поддержания единого код-стиля.

Эти шаги помогут вам сделать проект более гибким, поддерживаемым и удобным в разработке.

Что дальше?

В следующей статье я расскажу:

🔹 Как и зачем создавать свой корпоративный NuGet-пакет — преимущества, настройка, публикация.
🔹
Как реализовать систему обновлений для плагинов — автоматическое обновление сборок, управление версиями.

Следите за обновлениями - telegram! 🚀