Pull to refresh
0
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Новые фичи для авторов расширений в Visual Studio 2019 v.16.1

Reading time3 min
Views3.2K
Original author: Mads Kristensen
В начале прошлой недели мы выпустили Visual Studio 2019 v.16.1 Preview 1 (см. примечания к выпуску). Это первое превью первого обновления Visual Studio 2019. Если вы еще не настроили получение Preview-версий, то сделайте это сейчас. Preview-версия без проблем устанавливается рядом с Release-версией, так что они не мешают друг другу. Я настоятельно рекомендую всем авторам расширений установить Preview-версию.

У вас сейчас установлена 16.1 Preview? Замечательно. Вот некоторые фичи, которые могут вам понравиться. Подробности под катом!



Поддержка общего проекта (Shared Project)


Существует несколько причин, по которым авторам расширений иногда приходится разбивать расширение на несколько проектов для поддержки различных версий Visual Studio. Если вы используете API, который не существовал для более ранней версии Visual Studio, или если между версиями, которые вы хотите поддерживать, есть существенные изменения. Теперь стало намного проще разделить расширение.

В Visual Studio 2019 v.16.1 Preview 1 мы добавили поддержку ссылок на Shared Project из проектов VSIX в том же решении.

image

Вы можете поместить общий код в отдельный Shared Project, который компилируется непосредственно в проекты VSIX во время сборки. Единственный код, который затем существует в самих проектах VSIX — это специфичный код для поддерживаемой версии Visual Studio. Результатом являются две отдельные VSIX, которые нацелены на собственный диапазон версий Visual Studio и совместно используют большую часть кода из общего проекта. Проверьте код для расширения Extension Manager, который делает именно это.

Больше нет необходимости в файле .resx


При добавлении команд, меню и т.д., используя файл VSCT, необходимо указать файл .resx, помеченный свойством MergeWithCTOMSBuild. Шаблоны в Visual Studio заботятся о добавлении этого файла, а также добавляют файл .ico, на который ссылается файл .resx. Тем не менее, необходимость в .resx является деталью имплементации, и большинству расширений ее не нужно использовать.

В целях упрощения проекта VSIX требование к файлам .resx /.ico было удалено для использующих последнюю версию пакета NuGet Microsoft.VSSDK.BuildTools 16.0 или более новую.

За кулисами пакет NuGet предоставляет пустой .resx для компиляции со свойством MergeWithCTO до тех пор, пока вы не зарегистрировали свой собственный в проекте.

Per-Monitor Awareness


Дополнительная поддержка per-monitor включена в 16.1 с установленной .NET Framework 4.8. Windows Forms UI теперь лучше справляется с масштабированием DPI на мониторах. Однако это может вызвать проблемы с UI в вашем расширении после установки .NET Framework 4.8.

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

using (DpiAwareness.EnterDpiScope(DpiAwarenessContext.SystemAware))
using (var form = new MyForm())
{
    form.ShowDialog();
}

Все, что вам нужно, это добавить ссылку на пакет NuGet Microsoft.VisualStudio.DpiAwareness. Используйте этот пакет в расширениях, ориентированных на более ранние версии Visual Studio, но имейте в виду, что он заработает только при использовании в версии 16.1 и новее. Таким образом, его можно использовать в расширениях, охватывающих несколько версий Visual Studio.

Чтобы упростить имитацию нескольких мониторов, работающих с различным масштабированием DPI, инженер из команды Visual Studio IDE создал небольшой удобный инструмент и поместил его на GitHub. Команда использовала этот инструмент, когда добавляла поддержку для per-monitor awareness, так что вы тоже можете посчитать его полезным.

Прочитайте подробнее о том, как работать с Per-Monitor Awareness.

Отключена синхронная автозагрузка


18 месяцев назад мы отправили электронное письмо партнерам по расширению, объявив об устаревании синхронной автозагрузки пакетов расширений. Год назад мы опубликовали пост в блоге с более подробной информацией о том, что синхронно автозагружаемый пакет не будет поддерживаться в будущей версии Visual Studio. Эта версия — 16.1.

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

Новый метапакет SDK


Метапакет Microsoft.VisualStudio.SDK — это отдельный пакет NuGet, который ссылается на все различные пакеты Visual Studio, составляющие SDK. Самое крутое в метапакете — это то, что у вас есть доступ ко всем интерфейсам и сервисам. Кроме того, вы также избегаете проблем с несовпадающими версиями пакетов.

Когда мы выпустили Visual Studio 2019 (16.0), шаблон проекта VSIX ссылался на версию 15.9 метапакета SDK. Это было потому, что версия 16.0 все еще находилась в стадии разработки. Все отдельные пакеты должны были быть опубликованы в NuGet, прежде чем мы могли получить зависимость от них из метапакета.

Хорошей новостью является то, что теперь у нас наконец-то готова версия 16.0. Если ваше расширение поддерживает версию 16.0, то вы должны использовать ее,. Также, вы можете узнать больше о версиях расширений здесь.
Tags:
Hubs:
+11
Comments0

Articles

Information

Website
www.microsoft.com
Registered
Founded
Employees
Unknown
Location
США