Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Новая модель VisualStudio.Extensibilty позволяет запускать расширения за пределами основного процесса Visual Studio в отдельном процессе узла .NET. Так как .NET используется в качестве среды выполнения для выполнения расширений VisualStudio.Extensibility, расширения, созданные с помощью платформы VisualStudio.Extensibility, должны оставаться up-to-date с общедоступными поддерживаемыми средами выполнения долгосрочного обслуживания .NET (LTS).
Модель поддержки среды выполнения .NET
Среда выполнения .NET имеет собственные временные шкалы времени существования и обслуживания, независимо от Visual Studio. Периодичность текущего графика предусматривает выпуск новой версии .NET каждый год: нечётные основные версии получают 18 месяцев поддержки, а чётные — долгосрочную поддержку (LTS) на 36 месяцев. В любой момент времени Visual Studio поставляется с версиями .NET LTS, которые всё ещё находятся в общедоступной поддержке. См. официальный список сред выполнения .NET и их срок службы по ссылке здесь.
На следующей временной шкале показана приблизительная оценка различных версий .NET, поставляемых с Visual Studio.
По умолчанию расширения VisualStudio.Extensibility ориентированы на самую старую поддерживаемую среду выполнения .NET LTS. Однако разработчики расширений могут указать в метаданных расширения, какие версии расширения .NET, как известно, поддерживаются. Учитывая эти сведения, Visual Studio выбирает соответствующий целевой объект на основе объявленной версии среды выполнения .NET расширения и известных дат окончания срока жизни.
Важно отметить, что разработчики, использующие VisualStudio.Extensibility, должны использовать текущий пакет SDK для .NET. Если расширение разработано для версии .NET, которая больше не поддерживается ( и поэтому больше не поставляется с Visual Studio), Visual Studio выберет старую общедоступную среду выполнения, доступную для запуска расширения. Несмотря на то, что вероятность разрушающего изменения между основными версиями .NET низка, не гарантируется, что приложение, работающее на предыдущей версии .NET, будет функционировать на более новой, поэтому работа расширения не гарантируется.
Опыт
Взаимодействие с конечным пользователем
Visual Studio выберет, какую среду выполнения .NET следует использовать для расширения на основе объявленной поддерживаемой версии .NET и версий .NET, доступных Visual Studio. Существует только два сценария, в которых пользователи увидят любой отход от текущего интерфейса:
- Если расширение поддерживается только до версии .NET, которая приближается к концу своего жизненного цикла, на плитке расширения в окне диспетчера расширений будет отображаться значок информации, чтобы предупредить пользователя о том, что существует риск прекращения поддержки расширения.
- Если расширение поддерживается только до версии .NET, достигшей конца срока поддержки, значок предупреждения будет отображаться на плитке расширения в окне диспетчера расширений, чтобы сообщить пользователю, что расширение запускается в рамках подхода "наилучших усилий" на версии .NET, для которой не объявлена поддержка и которая может работать неправильно.
В обоих сценариях пользователь должен обратиться к разработчику расширений и попросить его убедиться, что расширение работает с поддерживаемой версией .NET LTS и опубликовать обновленное расширение.
Опыт разработчика — отладка
Для разработчиков расширений VisualStudio.Extensibility интерфейс отладки F5 был обновлён, чтобы разрешить использование среды выполнения .NET при отладке или тестировании расширения. Цель этого интерфейса — упростить тестирование совместимости расширений VisualStudio.Extensibility в разных средах выполнения .NET.
Теперь, когда выбранный проект запуска является проектом VisualStudio.Extensibility, дополнительный пункт меню со списком сред выполнения .NET, которые поставляются с Visual Studio, отображается в выпадающем списке меню отладки. Отладка расширения в выбранной среде выполнения гарантирует, что отлаживаемое расширение выполняется в выбранной среде выполнения. В экспериментальном экземпляре плитка расширений в окне инструмента Диспетчера расширений отображает значок лаборатории и указывает версию .NET, для которой она оценивается. На следующем снимке экрана это демонстрируется с использованием расширения Command Sample
.
Обратите внимание, что пример — это сценарий, в котором Visual Studio включает .NET 6 и .NET 8. В текущих релизах будут включены только поддерживаемые версии LTS .NET в составе Visual Studio.
Опыт разработчика — конфигурация расширения
Необязательное поле DotnetTargetVersions
доступно в ExtensionConfiguration
для разработчиков, чтобы указать одну или несколько сред выполнения .NET, которые поддерживает их расширение. Это поле принимает список идентификаторов целевых платформ, таких как net8.0
или netstandard2.0
. Если это указано, эта информация позволяет Visual Studio определить, какую среду выполнения следует использовать для запуска расширения. Если поле остается пустым, то более старая из общедоступных поддерживаемых сред выполнения, входящих в состав Visual Studio, будет установлена по умолчанию.
Анализатор расширяемости VisualStudio.Extensibility генерирует предупреждения, если идентификаторы целевой платформы, указанные в свойстве <TargetFrameworks>
файла проекта расширения, не соответствуют идентификаторам целевой платформы, объявленным и опущенным в ExtensionConfiguration
. Если в ExtensionConfiguration
цели не заданы, то предупреждение возникает, если какой-либо из моникеров в <TargetFrameworks>
не совместим с выбранным по умолчанию. Если целевые объекты задаются в ExtensionConfiguration
, предупреждение возникает, если любой из идентификаторов, указанных в <TargetFrameworks>
, несовместим с полученными значениями.
Например, если расширение строится с учетом netstandard2.0
, то оно совместимо с любой версией .NET. Однако, если разработчик оставляет DotnetTargetVersions
пустым и net8.0
выбран в качестве значения по умолчанию, а расширение создается с целевым назначением net6.0
, выдается предупреждение.
На следующих рисунках показан пример расширения, созданного для .NET 8, но в котором указан .NET 6 в DotnetTargetVersions
.
Тестирование раннего доступа &
Если вы хотите попробовать управлять расширением с несколькими средами выполнения .NET, просмотрите скрипты, включенные в репозиторий VSExtensibility . Включенные скрипты позволяют обновлять любой из экземпляров Visual Studio с помощью .NET 9. Обратите внимание, что .NET 9 не является версией LTS для .NET и что это не является поддерживаемым сценарием, но он предоставит пример будущих возможностей разработки расширений VisualStudio.Extensibility с несколькими доступными средами выполнения .NET.