Введение
При разработке плагинов для 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".
Как установить расширение
- Закройте Visual Studio, если он был ранее открыт.
- Загрузите расширение - SDKUpdater
- Установите расширение и откройте 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:
Важно:
- Для Revit 2017–2022 используется net4x. Более детально смотри в файле csproj
- Для Revit 2025+ требуется net8.0-windows.
Так же через менеджер конфигураций решения нужно добавить новые конфигурации
После добавления всех версий (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> можно задать зависимости следующим образом:
· Каждая версия Revit_All_Main_Versions_API_x64 подключается условно, используя Condition="$(Configuration.Contains('RXX'))", где RXX — версия Revit.
· Это позволяет подключать только нужную версию API в зависимости от выбранной конфигурации сборки, что уменьшает вероятность конфликтов между версиями.
API Revit может меняться между версиями, поэтому код может потребовать модификации при обновлении. И для решения можно использовать директивы условной компиляции:
4. Описание Batch Build и его ограничений
Batch Build позволяет собрать проект сразу для нескольких конфигураций (версий Revit).
Чтобы использовать Batch Build:
- В Visual Studio откройте Build → Batch Build.
- Выберите конфигурации (например, R17_Release, R18_Release, R25_Release).
- Нажмите Build.
Однако есть ограничение: Build может работать некорректно при смене версии версии фреймворка например с .NET Framework 4.6 на NET Framework 4.7
Подробнее об этой проблеме: GitHub Issue. С радостью бы услышал решение данной проблемы и дописал в этой статье!
Актуализация версии языка C#
При работе с .NET важно использовать актуальную версию языка C#, так как это позволяет применять новые синтаксические возможности, улучшать читаемость кода и повышать производительность. В данном случае обновление версии C# до 13.0 даст доступ к последним улучшениям.
Как задать версию C# в проекте?
Чтобы явно указать используемую версию языка, нужно в .csproj файле в общей секции <PropertyGroup> добавить следующий параметр:
Это укажет компилятору использовать 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.
Создание файла:
- В корне проекта (или в папке Properties) создать файл stylecop.json.
2. Вставить в него следующую базовую настройку stylecop.json:
3. И в свойствах файла указать Build action - C# analyzer additional file.
3. Проверка работы анализатора
После установки и настройки анализатора Visual Studio начнет подсвечивать ошибки и предупреждения, связанные с оформлением кода.
Как проверить?
- Навести курсор на предупреждение — появится описание проблемы и предложенный вариант исправления.
- В меню "Быстрые действия" (Ctrl + .) можно применить автоисправление.
- Например, если класс не содержит заголовка, StyleCop предложит его добавить автоматически.
Пример исправления ошибки
StyleCop может выдавать предупреждение:
Чтобы исправить можно добавить комментарий. В данном случае используем inheritdoc тк метод описан в реализуемом методе.
Рекомендации
- Файл stylecop.json можно редактировать в зависимости от требований проекта. Например, можно изменить порядок using-директив, включить/отключить документацию или задать дополнительные правила форматирования.
- Полный список поддерживаемых правил можно найти в официальной документации:
🔗 Документация StyleCop Analyzers - Пример проекта с готовым конфигом можно посмотреть здесь:
🔗 Пример проекта
Четких рекомендаций тут не будет, думайте сами что для вас является нормой и под свое чувство прекрасного настраивайте анализатор)
Вывод
- StyleCop.Analyzers помогает улучшить качество кода, следуя строгим правилам форматирования.
- Файл stylecop.json позволяет настроить анализатор под нужные стандарты.
- После настройки анализатор начинает автоматически проверять код и предлагать исправления.
Использование StyleCop делает код более читаемым, единообразным и соответствующим принятым стандартам разработки.
Вывод
В этой статье мы разобрали ключевые шаги по настройке проекта для работы с Revit, включая:
✅ Обновление версии SDK — почему это важно и как выполнить через Visual Studio Installer.
✅ Перевод проекта в SDK-стиль — преимущества нового формата и процесс конвертации.
✅ Настройку поддержки нескольких версий Revit — конфигурацию .csproj и параметров запуска.
✅ Выбор и подключение NuGet-пакетов в зависимости от версии Revit.
✅ Актуализацию версии C# и решения проблем совместимости архитектуры.
✅ Добавление и настройку анализатора кода (StyleCop) для поддержания единого код-стиля.
Эти шаги помогут вам сделать проект более гибким, поддерживаемым и удобным в разработке.
Что дальше?
В следующей статье я расскажу:
🔹 Как и зачем создавать свой корпоративный NuGet-пакет — преимущества, настройка, публикация.
🔹 Как реализовать систему обновлений для плагинов — автоматическое обновление сборок, управление версиями.
Следите за обновлениями - telegram! 🚀