Что такое Visual Studio SDK

Обновлено: 02.07.2024

Пакет разработки программного обеспечения (SDK) — это набор API-интерфейсов, на которые можно ссылаться как на один элемент в Visual Studio. В диалоговом окне «Диспетчер ссылок» перечислены все пакеты SDK, относящиеся к проекту. Когда вы добавляете SDK в проект, API доступны в Visual Studio.

Существует два типа SDK:

Platform SDK — это обязательные компоненты для разработки приложений для платформы. Например, для разработки приложений Магазина Windows 8.x требуется Windows 8.1 SDK.

Extension SDK — это необязательные компоненты, которые расширяют платформу, но не являются обязательными для разработки приложений для этой платформы.

В следующих разделах описывается общая инфраструктура SDK и создание SDK платформы и SDK расширения.

SDK платформы

Платформа SDK необходима для разработки приложений для платформы. Например, для разработки приложений для Windows 8.1 требуется Windows 8.1 SDK.

Установка

Все платформенные SDK будут установлены в HKLM\Software\Microsoft\Microsoft SDK\[TPI]\v[TPV]\@InstallationFolder = [Корень SDK]. Соответственно, Windows 8.1 SDK устанавливается в HKLM\Software\Microsoft\Microsoft SDKs\Windows\v8.1.

Макет

SDK платформы имеют следующую структуру:

DisplayName: значение, которое Браузер объектов отображает в списке просмотра.

PlatformIdentity: наличие этого атрибута сообщает Visual Studio и MSBuild, что SDK является платформенным SDK и что добавленные из него ссылки не следует копировать локально.

TargetFramework: этот атрибут используется Visual Studio, чтобы гарантировать, что только проекты, предназначенные для тех же платформ, которые указаны в значении этого атрибута, могут использовать SDK.

MinVSVersion: этот атрибут используется Visual Studio для использования только применимых к нему пакетов SDK.

SDK расширений

В следующих разделах описано, что необходимо сделать для развертывания расширения SDK.

Установка

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

%Program Files%\Microsoft SDK\v

Для пользовательской установки используйте следующий путь:

%USERPROFILE%\AppData\Local\Microsoft SDK\v

Если вы хотите использовать другое местоположение, вы должны сделать одно из двух:

Укажите его в ключе реестра:

HKLM\Software\Microsoft\Microsoft SDK\v

и добавьте подраздел (по умолчанию) со значением

Добавьте свойство MSBuild SDKReferenceDirectoryRoot в файл проекта. Значением этого свойства является список каталогов, разделенных точкой с запятой, в которых находятся Extension SDK, на которые вы хотите сослаться.

Схема установки

Расширения SDK имеют следующую схему установки:

\ \ : имя и версия расширения SDK получаются из соответствующих имён папок в пути к корню SDK. MSBuild использует это удостоверение для поиска пакета SDK на диске, и Visual Studio отображает это удостоверение в окне свойств и диалоговом окне диспетчера ссылок.

Папка

References: двоичные файлы, содержащие API. Это могут быть файлы метаданных Windows (WinMD) или сборки.

Папка

Redist: файлы, которые необходимы для выполнения/отладки и должны быть упакованы как часть пользовательского приложения. Все двоичные файлы должны быть помещены под \redist\ \ , а имена двоичных файлов должны иметь следующий формат для обеспечения уникальности: ] .

<р>. <эм>. Например, *Microsoft.Cpp.Build.dll. Все файлы с именами, которые могут конфликтовать с именами файлов из других SDK (например, файлы javascript, css, pri, xaml, png и jpg), должны быть помещены в папку \redist\ \\ *, за исключением файлов, которые связанные с элементами управления XAML. Эти файлы должны быть помещены в папку *\redist\ \\ \.

Папка

DesignTime: файлы, которые необходимы только перед запуском/отладкой и не должны упаковываться как часть пользовательского приложения. Это могут быть XML-документы, библиотеки, заголовочные файлы, двоичные файлы инструментов времени разработки, артефакты MSBuild и т. д. Любой SDK, предназначенный для использования в собственном проекте, должен иметь файл SDKName.props. Ниже показан пример файла этого типа.

Папка

Configuration: три подпапки: Debug, Retail и CommonConfiguration. Авторы SDK могут размещать свои файлы в разделе CommonConfiguration, когда необходимо использовать один и тот же набор файлов SDK, независимо от конфигурации, на которую нацелен потребитель SDK.

Папка

Архитектура: поддерживаются следующие архитектуры: x86, x64, ARM, нейтральная. Win32 сопоставляется с x86, а AnyCPU сопоставляется с нейтральным.

SDKManifest.xml

Файл SDKManifest.xml описывает, как Visual Studio должна использовать SDK. Ниже приведен пример:

В следующем списке приведены элементы файла:

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

ProductFamilyName: общее название продукта SDK. Например, пакет SDK для библиотеки Windows для JavaScript (WinJS) называется "Microsoft.WinJS.1.0" и "Microsoft.WinJS.2.0" и принадлежит к одному и тому же семейству продуктов SDK, "Microsoft.WinJS". Этот атрибут позволяет Visual Studio и MSBuild установить это соединение. Если этот атрибут не существует, имя SDK используется в качестве имени семейства продуктов.

FrameworkIdentity: указывает зависимость от одной или нескольких библиотек компонентов Windows. Значение этого атрибута помещается в манифест потребляющего приложения. Этот атрибут применим только к библиотекам компонентов Windows.

TargetFramework: указывает SDK, доступные в диспетчере ссылок и наборе инструментов. Это разделенный точкой с запятой список моникеров целевой платформы, например ".NET Framework, версия = v2.0; .NET Framework, версия = v4.5.1". Если указано несколько версий одной и той же целевой платформы, диспетчер ссылок использует самую раннюю из указанных версий для целей фильтрации. Например, если указано «.NET Framework, версия = v2.0; .NET Framework, версия = v4.5.1», диспетчер ссылок будет использовать «.NET Framework, версия = v2.0». Если указан конкретный профиль целевой платформы, только этот профиль будет использоваться диспетчером ссылок для целей фильтрации. Например, если указано «Silverlight, version=v4.0, profile=WindowsPhone», диспетчер ссылок фильтрует только профиль Windows Phone; проект, ориентированный на полную платформу Silverlight 4.0, не видит SDK в диспетчере ссылок.

MinVSVersion: минимальная версия Visual Studio.

MaxPlatformVerson: максимальная версия целевой платформы должна использоваться для указания версий платформы, на которых ваш Extension SDK не будет работать. Например, на пакет среды выполнения Microsoft Visual C++ версии 11.0 следует ссылаться только в проектах Windows 8. Таким образом, MaxPlatformVersion проекта Windows 8 — 8.0. Это означает, что диспетчер ссылок отфильтровывает пакет среды выполнения Microsoft Visual C++ для проекта Windows 8.1, а MSBuild выдает ошибку, когда на него ссылается проект Windows 8.1. Примечание. Этот элемент поддерживается, начиная с Visual Studio 2013.

AppliesTo: указывает SDK, доступные в диспетчере ссылок, путем указания применимых типов проектов Visual Studio. Распознаются девять значений: WindowsAppContainer, VisualC, VB, CSharp, WindowsXAML, JavaScript, Managed и Native. Автор SDK может использовать операторы и ("+') или ("|"), а не ("!"), чтобы точно указать объем типов проектов, применимых к SDK.

WindowsAppContainer идентифицирует проекты для приложений Магазина Windows 8.x.

SupportedArchitectures: список архитектур, разделенных точкой с запятой, которые поддерживает SDK. MSBuild отображает предупреждение, если целевая архитектура пакета SDK в проекте-потребителе не поддерживается. Если этот атрибут не указан, MSBuild никогда не отображает предупреждение такого типа.

SupportsMultipleVersions: если для этого атрибута установлено значение Error или Warning, MSBuild указывает, что один и тот же проект не может ссылаться на несколько версий одного и того же семейства SDK. Если этот атрибут не существует или для него установлено значение Разрешить, MSBuild не отображает этот тип ошибок или предупреждений.

AppX: указывает путь к пакетам приложений для библиотеки компонентов Windows на диске. Это значение передается компоненту регистрации библиотеки компонентов Windows во время локальной отладки. Соглашение об именах для имени файла: .

CopyRedistToSubDirectory: указывает, куда файлы в папке \redist должны быть скопированы относительно корня пакета приложения (то есть расположения пакета, выбранного в мастере создания пакета приложения) и корня макета среды выполнения. Расположение по умолчанию — корень пакета приложения и макет F5.

DependsOn: список идентификаторов SDK, определяющих SDK, от которых зависит этот SDK. Этот атрибут отображается на панели сведений диспетчера ссылок.

MoreInfo: URL-адрес веб-страницы со справкой и дополнительной информацией. Это значение используется в ссылке «Дополнительная информация» на правой панели диспетчера ссылок.

Тип регистрации: указывает регистрацию WinMD в манифесте приложения и требуется для собственного WinMD, который имеет аналогичную реализацию DLL.

Ссылка на файл: указана только для тех ссылок, которые содержат элементы управления или являются собственными WinMD. Сведения о том, как указать, содержит ли ссылка элементы управления, см. в разделе Указание расположения элементов панели инструментов ниже.

Укажите расположение элементов панели инструментов

Элемент ToolBoxItems схемы SDKManifest.xml указывает имена элементов управления, исходных сборок и имена вкладок панели инструментов для элементов панели инструментов как для платформы, так и для SDK расширений.В следующих примерах показаны различные сценарии. Это применимо к ссылкам на WinMD или DLL.

Обратите внимание, что в Visual Studio 2019 и более ранних версиях Visual Studio не перечисляла имена элементов управления панели инструментов в манифесте, а динамически перечисляла типы элементов управления в сборках SDK. Начиная с Visual Studio 2022, это больше не поддерживается; элементы панели инструментов должны быть явно указаны в SDKManifest.xml.

Поместите элементы управления в категорию по умолчанию панели инструментов.

Поместите элементы управления под определенным названием категории.

Размещайте элементы управления под определенными названиями категорий.

Поместите элементы управления под разными названиями категорий в Blend и Visual Studio.

По-разному перечисляйте отдельные элементы управления в Blend и Visual Studio.

Перечислите определенные элементы управления и поместите их в общий путь Visual Studio или только в группу "Все элементы управления".

Перечислите определенные элементы управления и покажите только определенный набор в ChooseItems без их на панели инструментов.

Пакет Visual Studio SDK помогает расширять возможности Visual Studio или интегрировать новые функции в Visual Studio. Вы можете распространять свои расширения среди других пользователей, а также в Visual Studio Marketplace. Ниже приведены некоторые способы расширения Visual Studio:

Добавить команды, кнопки, меню и другие элементы пользовательского интерфейса в IDE

Добавить окна инструментов для новых функций

Расширить IntelliSense для заданного языка или предоставить IntelliSense для новых языков программирования

Используйте лампочки, чтобы дать подсказки и предложения, которые помогут разработчикам писать лучший код

Включить поддержку нового языка

Добавить пользовательский тип проекта

Обратитесь к миллионам разработчиков через Visual Studio Marketplace

Если вы никогда раньше не писали расширения для Visual Studio, вам следует найти дополнительную информацию об этих функциях и в разделе Начало разработки расширений Visual Studio.

Установите пакет SDK для Visual Studio

Пакет SDK для Visual Studio — это необязательная функция в программе установки Visual Studio. Вы также можете установить VS SDK позже. Дополнительные сведения см. в разделе Установка Visual Studio SDK.

Что нового в Visual Studio SDK

В Visual Studio SDK добавлены некоторые новые функции, такие как предупреждение о синхронной автоматической загрузке расширений и формат VSIX v3, а также критические изменения, которые могут потребовать обновления вашего расширения. Дополнительные сведения см. в разделах Новые возможности пакета SDK для Visual Studio 2019 и Новые возможности пакета SDK для Visual Studio 2017.

Руководство пользователя Visual Studio

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

Вы также можете узнать, как сделать так, чтобы ваше расширение отлично выглядело на устройствах с высоким разрешением, из статьи "Устранение проблем с разрешением DPI".

Воспользуйтесь преимуществами сервиса и каталога изображений для удобного управления изображениями и поддержки высокого разрешения и тем.

Найти и установить существующие расширения Visual Studio

Вы можете найти расширения Visual Studio в диалоговом окне "Расширения и обновления" в меню "Инструменты". Дополнительные сведения см. в разделе Поиск и использование расширений Visual Studio. Вы также можете найти расширения в Visual Studio Marketplace

Справочник по Visual Studio SDK

Справочник по Visual Studio SDK API можно найти в справочнике Visual Studio SDK.

Примеры Visual Studio SDK

Примеры расширений VS SDK с открытым исходным кодом можно найти на GitHub в Visual Studio Samples. Этот репозиторий GitHub содержит примеры, иллюстрирующие различные расширяемые функции Visual Studio.

Другие ресурсы Visual Studio SDK

Если у вас есть вопросы о VSSDK или вы хотите поделиться своим опытом разработки расширений, вы можете воспользоваться форумом Visual Studio Extensibility Forum или чатом ExtendVS Gitter.

Дополнительную информацию можно найти в блоге VSX Arcana и ряде блогов, написанных Microsoft MVP:

Visual Studio SDK содержит следующие новые и обновленные функции для Visual Studio 2019.

Предупреждение об синхронно загружаемых расширениях

Пользователи теперь увидят предупреждение, если какое-либо из установленных расширений синхронно автоматически загружается при запуске. Вы можете узнать больше о предупреждении в Синхронно автоматически загружаемых расширениях.

Единый унифицированный пакет SDK для Visual Studio

Теперь вы можете получить все ресурсы Visual Studio SDK с помощью одного пакета NuGet Microsoft.VisualStudio.SDK.

Усовершенствования регистрации редактора

С момента своего создания Visual Studio поддерживает регистрацию пользовательского редактора, при которой редактор может заявить о своем сходстве с определенными расширениями (например, .xaml и .rc) или о том, что он подходит для любого расширения (.*). Начиная с Visual Studio 2019 версии 16.1 мы расширяем поддержку регистрации редактора.

Имена файлов

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

Например, редактор, который поддерживает все файлы .json, применит этот атрибут ProvideEditorExtension к своему пакету:

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

UIContext

Редактор может зарегистрировать один или несколько UIContexts, которые представляют, когда он включен. UIContexts регистрируются путем применения одного или нескольких экземпляров ProvideEditorUIContextAttribute к пакету, который регистрирует редактор.

Если редактор зарегистрировал UIContexts:

  • Если хотя бы один из его зарегистрированных UIContexts активен при открытии файла с данным расширением, редактор включается в поиск редактора.
  • Если ни один из зарегистрированных UIContexts не активен, редактор не включается в поиск редактора.

Если редактор не регистрирует никаких UIContexts, он всегда включается в поиск редактора для этого расширения.

В настоящее время мы сталкиваемся с некоторыми конфликтами между VS и Windows SDK, и мне пришло в голову, что есть что-то фундаментальное, чего я не понимаю:
Почему MS публикует две отдельные линейки инструментов разработки для Windows?? Я понимаю, что WinSDK бесплатен и не включает IDE, но зачем поддерживать два отдельных набора заголовков и библиотек? Разве WinSDK в принципе не должен быть подмножеством выпуска VS?

Со временем появилось несколько выпусков/версий Windows SDK. Некоторые из них являются бесплатными с Visual Studio, другие — автономными. Visual Studio обычно использует одну конкретную версию среди установленных Windows SDK.

Ссылка, которую вы разместили, относится к совершенно другому сценарию. В нем показаны некоторые трудности при переносе внешнего SDK (DirectX) в основной Windows SDK.

Как уже отмечалось, MSVS и Windows SDK — это, по сути, два разных продукта. Такие вещи, как DirectX SDK, Silverlight SDK и наборы драйверов устройств, — это опять же разные продукты. В: Какова реальная проблема, с которой вы столкнулись? Может быть, это вовсе не "конфликт"?

Ссылка (и фактическая проблема) именно в этом сценарии, поскольку мы широко используем типы d3dx. Цитируя ссылку: «. D3DX не считается каноническим API для использования Direct3D в Windows 8 и более поздних версиях и поэтому не включен в соответствующий Windows SDK. Изучите альтернативные решения для работы с Direct3D API. Для устаревших проектов, таких как Образцы DirectX SDK для Windows 7 (и более ранних версий), необходимо выполнить следующие шаги.» Я бы сказал, что еще немного рано рассматривать устаревшую версию Windows 7, но да ладно. Интересно, почему все минусы. Любой downvoter хочет объяснить?

Полагаю, просто не совсем понятно, о чем вы спрашиваете, Офек. Вы явно не указали, в чем заключается ваша проблема. И если ваша проблема примерно соответствует описанию в предыдущем комментарии, вы уже разместили ссылку на решение.

1 Ответ 1

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

Например, существуют отдельные SDK для Windows XP, Vista, Windows 7 и Windows 8. Каждый SDK имеет собственный набор заголовков, хотя на практике каждый новый SDK является расширенным набором предыдущего.

Эти заголовки могут использоваться с любым компилятором C/C++ и часто преобразуются для использования в других языках программирования (Delphi и т. д.).

Другое подразделение Microsoft производит Visual Studio со своим собственным циклом выпуска. Они упаковывают заголовки и библиотеки, но обычно не инструменты или примеры, для последней сборки Windows SDK, доступной на момент выпуска Visual Studio.

Читайте также: