Пакет SDK для приложений Windows
Пакет SDK для приложений Windows — это набор компонентов и инструментов для разработчиков, которые представляют новый этап развития платформы для разработки приложений Windows. Пакет SDK для приложений Windows предоставляет унифицированный набор API-интерфейсов и средств, которые можно единообразно применять для любого классического приложения в операционных системах Windows 11 и более ранних версий, вплоть до Windows 10 версии 1809.
Начало работы с пакетом SDK для приложений Windows
Пакет SDK для приложений для Windows предоставляет расширения для Visual Studio 2019 и Visual Studio 2022. К этим расширениям относятся шаблоны проектов, настроенные для использования компонентов пакета SDK для приложений для Windows в новых проектах. Кроме того, библиотеки пакета SDK для приложений Windows доступны через пакет NuGet, который можно установить в существующих проектах.
Рекомендации по конкретным версиям пакета Windows App SDK см. в статьях Каналы выпуска и Файлы для загрузки.
Функции пакета SDK для приложений для Windows
В следующей таблице описаны функции разработки, предоставляемые текущими выпусками пакета SDK для приложений для Windows. Дополнительные сведения о каналах выпуска пакета SDK для приложений для Windows, включая сведения о каждой из этих функций, см. в разделе Функции, доступные через канал выпуска.
Каналы выпуска пакета SDK для приложений Windows
В следующей таблице приведены общие сведения о различных каналах выпуска.
| Выпуск | Описание |
|---|---|
| Стабильный | Этот канал поддерживается приложениями в рабочих средах. Он включает только стабильные API. По умолчанию документация по пакету SDK для приложений Windows описывает стабильный выпуск. |
| Предварительный просмотр | Этот канал предоставляет предварительную версию следующего стабильного выпуска. В период между выпуском предварительной и следующей стабильной версий могут быть реализованы критические изменения API. Документацию по использованию предварительного выпуска см. в руководстве по предварительным и экспериментальным версиям. |
| Экспериментальный | В этом канале представлены экспериментальные функции на ранних этапах разработки. Экспериментальные функции могут быть удалены из следующего выпуска или не выпущены вообще. Документацию по использованию экспериментального выпуска см. в руководстве по предварительным и экспериментальным версиям. |
Дополнительные сведения о каналах выпуска пакета SDK для приложений Windows см. в статье Каналы выпуска пакета SDK для приложений Windows.
Преимущества пакета SDK для приложений Windows, которые получат разработчики Windows
Пакет SDK для приложений Windows предоставляет широкий спектр API-интерфейсов Windows с реализациями, не зависящими от ОС, которые предоставляются разработчикам в виде пакетов NuGet. Пакет SDK для приложений Windows не предназначен для замены Windows SDK. Windows SDK будет работать так же, как и раньше, а многие основные компоненты Windows будут совершенствоваться с помощью API, которые предоставляются в выпусках ОС и Windows SDK. Мы рекомендуем разработчикам переходить на пакет SDK для приложений Windows в удобном для себя темпе.
Унифицированное использование API для разных платформ классических приложений
Разработчики, которые хотят создавать классические приложения для Windows, вынуждены выбирать между несколькими платформами и средами приложений. Хотя каждая из таких платформ предоставляет множество функций и API, которые могут использоваться приложениями, созданными с помощью других платформ, некоторые из них могут использовать только определенные платформы. Пакет SDK для приложений Windows унифицирует доступ к API-интерфейсам Windows из классических приложений Windows 11 и Windows 10. Независимо от выбранной вами модели приложений вы получите доступ ко всему набору API-интерфейсов Windows, представленных в пакете SDK для приложений Windows.
Мы планируем и дальше развивать пакет SDK для приложений Windows, устраняя пока сохранившиеся различия между разными моделями приложений. Пакет SDK для приложений Windows будет включать как API WinRT, так и собственные API-интерфейсы C.
Согласованные возможности в разных версиях Windows
Так как API Windows меняются с каждой новой версией ОС, разработчикам нужно использовать такие техники, как адаптивный к версии код, чтобы учесть все различия в версиях, которые может использовать аудитория приложения. Это приводит к усложнению кода и работы разработчиков.
Интерфейсы API пакета SDK для приложений Windows будут работать с ОС Windows 11 и более ранних версий, вплоть до Windows 10 версии 1809. Таким образом, если все ваши клиенты работают с Windows 10 версии 1809 или любой более поздней версии Windows, вы сможете применять новые API-интерфейсы и функции пакета SDK для приложений Windows сразу после их выпуска. При этом вам не придется писать дополнительный код для адаптации к разным версиям.
Увеличенная частота выпусков
Новые API и функции Windows ранее обычно были привязаны к выпускам ОС, которые выходили один или два раза в год. Пакет SDK для приложений Windows будет чаще предоставлять обновления, чтобы вы могли быстрее получать доступ к инновационным возможностям на платформе разработки Windows по мере их появления.
Стратегия развития для разработчиков
Новейшие планы по обновлению пакета SDK для приложений Windows см. в описании стратегии.
Отзывы и участие в разработке
Мы создаем пакет SDK для приложений Windows как проект с открытым кодом. На нашей странице Github вы найдете дополнительную информацию о том, как мы работаем над пакетом SDK для приложений Windows и как вы можете поучаствовать в разработке. Ознакомьтесь с руководством для участников, если вы хотите задать вопрос, начать обсуждение или предложить функцию. Мы стремимся к тому, чтобы пакет SDK для приложений Windows предоставлял разработчикам максимум преимуществ.
Как работают SDK и API
SDK и API – это инструменты, которые позволяют интегрировать ИТ-продукты с внешними системами. В этой статье мы расскажем, чем отличаются эти два понятия и как разработчики применяют их для своих задач.
Начнём с определений.
API (application programming interface, программный интерфейс приложения) – это набор протоколов и инструментов, которые обеспечивают обмен данными между разными компонентами информационных систем.
Благодаря API мобильные приложения могут легко использовать «Яндекс.Карты» или «Календарь» от Google – обе корпорации предоставляют сторонним разработчикам готовые инструменты, чтобы встраивать эти модули в новые продукты. Это именно интерфейс для подключения к внешней инфраструктуре (в нашем примере – к сервисам Яндекса и Google), который позволяет решать прикладные задачи набором HTTP-запросов.
SDK (software development kit, средства для разработки ПО) решает более масштабную задачу: не просто обеспечить обмен данными между приложением и сторонней инфраструктурой, а реализовать полноценный процесс. Он может включать в себя рабочие компоненты для получения пользовательских данных, их безопасной обработки и хранения, изменения состояний.
В SDK могут входить несколько API, куски вспомогательного кода, обширная документация. Это не просто интерфейс для работы с системой, а готовый набор инструментов для реализации некой бизнес-логики.
Компании создают SDK, чтобы сторонние разработчики могли не погружаться в код, а решать свои задачи через абстракцию – вот этот блок обеспечивает работу личного кабинета, этот позволяет открыть камеру смартфона, и т.д. Безопасность данных, отказоустойчивость вызовов отдельных сервисов реализуются именно через SDK.
Попросту говоря, если API – это рецепт блюда, то SDK – это рецепт, нарезанные продукты, чётко отмеренные специи и набор всех кастрюль-сковородок, которые вам понадобятся в готовке.
В любом нашем продукте используются API заказчиков, чтобы получать данные из клиентской инфраструктуры.
В страховых приложениях мы таким образом подключаемся к бэкенду, чтобы загружать списки полисов, отправлять данные о страховых случаях. В системах учёта продаж и приложениях для кассиров API отвечают за сохранение в бэкенде данных по авиабилетам и выгрузку информации для отчётов.
Это прикладные задачи «местного значения», которые не включают в себя сложную бизнес-логику. Поэтому они решаются посредством API.
Пример, когда возникла необходимость в SDK – это проект по созданию единого модуля для оформления ДТП для страховых приложений. Этот сложный сценарий объединяет авторизацию через ЕСИА, регистрацию происшествия с оформлением европротокола, обмен данными с СТ-ГЛОНАСС АИС ОСАГО, ГИБДД и другими компетентными органами.
Используя SDK, мы можем заключить всю сложную логику в готовый к использованию набор, который затем можно встраивать в любые приложения. Такой модуль включает в себя API для работы с ЕСИА и системами Российского союза автостраховщиков, средства защиты и проверки данных, компоненты для работы с камерой.
В результате у всех страховых компаний, которые будут использовать этот SDK, сценарий оформления происшествий в приложениях будет отвечать единым стандартам. При этом тратить собственные ресурсы на разработку такого сценария им не придётся.
Доступные пакеты SDK
Доступны следующие пакеты SDK:
Можно также создать собственный пакет SDK и распространять его с помощью NuGet.
Файлы проекта
Чтобы указать пакет SDK, который содержится в NuGet, добавьте версию в конец имени или укажите имя и версию в файле global.json.
Другим способом указания пакета SDK является элемент Sdk верхнего уровня.
На компьютере Windows файлы Sdk.props и Sdk.targets можно найти в папке %ProgramFiles%\dotnet\sdk\[версия]\Sdks\Microsoft.NET.Sdk\Sdk.
Предварительная обработка файла проекта
Включения и исключения по умолчанию
| Элемент | Стандартная маска включения | Стандартная маска исключения | Стандартная маска удаления |
|---|---|---|---|
| Compile | **/*.cs (или другие расширения языка) | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | Н/Д |
| EmbeddedResource | **/*.resx | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | Н/Д |
| None | **/* | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | **/*.cs; **/*.resx |
Ошибки сборки
Если вы явным образом определите любой из этих элементов в файле проекта, скорее всего, произойдет ошибка сборки NETSDK1022 с примерно таким сообщением:
Чтобы устранить такую проблему, выполните любое из следующих действий:
Если вы хотите указать файлы, которые нужно публиковать вместе с приложением, для этого можно по-прежнему использовать привычные механизмы MSBuild (например, элемент Content ).
Неявные директивы using
Неявные директивы global using добавляются для проектов, которые используют один из следующих пакетов SDK:
Директива global using добавляется для каждого пространства имен в наборе стандартных пространств имен, в зависимости от конкретного пакета SDK для проекта. Эти пространства имен по умолчанию показаны в следующей таблице.
| SDK | Пространства имен по умолчанию |
|---|---|
| Microsoft.NET.Sdk | System System.Collections.Generic System.IO System.Linq System.Net.Http System.Threading System.Threading.Tasks |
| Microsoft.NET.Sdk.Web | System.Net.Http.Json Microsoft.AspNetCore.Builder Microsoft.AspNetCore.Hosting Microsoft.AspNetCore.Http Microsoft.AspNetCore.Routing Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging |
| Microsoft.NET.Sdk.Worker | Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection Microsoft.Extensions.Hosting Microsoft.Extensions.Logging |
| Microsoft.NET.Sdk.WindowsDesktop (Windows Forms) | Пространства имен Microsoft.NET.Sdk System.Drawing System.Windows.Forms |
| Microsoft.NET.Sdk.WindowsDesktop (WPF) | Пространства имен Microsoft.NET.Sdk System.IO удалено System.Net.Http удалено |
Неявные ссылки на пакет
При необходимости можно отключить неявные ссылки на пакеты с помощью свойства DisableImplicitFrameworkReferences и добавить явные ссылки только на необходимые платформы или пакеты.
События сборки
Настройка сборки
Пользовательские целевые объекты
Чтобы добавить пользовательские целевые объекты или свойства сборки, нужно поместить файлы в форме
.props (например, Contoso.Utility.UsefulStuff.targets ) в папку build проекта.
SDK и пример приложений
Раздел “SDK (software development kits) и примеры приложений” аналогичен образцам и описаниям кода, но более обширен и обычно включает в себя целую коллекцию файлов, которые работают вместе как пакет или пример приложения. SDK может включать библиотеки, которые мы загружаем и встраиваем в свое приложение, и может состоять из инструментов, примеров приложений и другого кода.
Что такое SDK?
Термины API и SDK часто используются вместе, но они не являются синонимами. SDK реализуют независимый от языка REST API на определенном языке, таком как Java или C ++. API REST сами по себе не привязаны к какому-либо конкретному языку; обычно мы демонстрируем API, совершая запросы, используя cURL, инструмент командной строки для отправки веб-запросов и получения ответов. Но разработчики не будут использовать запросы cURL при реализации API. Вместо этого они будут реализовывать запросы API, используя язык, на котором написано их приложение.
Например, приложения Python, C++ или Node выполняют запросы API разными способами. Каждый язык имеет свой собственный способ построения запросов к API. Можно использовать Postman или Paw для автоматической генерации простого запроса на определенном языке (см. Автоматическая генерация примеров кода ). SDK выводит реализацию на другой уровень. SDK могут включать в себя гораздо больше файлов или библиотек как часть реализации.
В статье В чем разница между API и SDK? Kristopher Sandoval объясняет SDK следующим образом:
Sandoval сравнивает примеры API и SDK Facebook, чтобы прояснить разницу. Он резюмирует разницу следующим образом: «SDK является строительными блоками приложения, тогда как API является языком его запросов». Другими словами, SDK предоставляет весь необходимый код, необходимый для создания приложения, которое использует API.
Какова роль технического писателя в документировании SDK и примеров приложений
В руководстве SwaggerHub мы узнали, как автоматически генерировать клиентские SDK в интерфейсе SwaggerHub. Обычно, если ваша команда разработчиков предлагает клиентский SDK, вместо автоматически сгенерированного SDK будет код, который команда разработчиков готовит и тестирует. Команда разработчиков часто предоставляет SDK на нескольких целевых языках в зависимости от основного языка своего пользователя, что облегчает пользователям реализацию API.
Техническому писателю API, документирование SDK и примеров приложений является более сложной задачей, поскольку SDK требуют знания одного или нескольких языков программирования. Вопрос о том, сколько кода нужно знать техническому писателю рассмотрим в модуле Работа техписателя, поэтому здесь в подробности не будем вдаваться. Обычно разработчики не ожидают от вас глубокого знания нескольких языков программирования, но некоторое понимание потребуется для их описания и просмотра документации. При принятии решения о том, называть ли блок кода функцией, классом, методом или другим именем, необходимо иметь базовое понимание терминов, используемых в языке.

Если язык незнаком, можно просто взять то, что пишут инженеры, немного почистить его, попробовать пройтись по шагам, чтобы заставить работать любые примеры приложений, и посмотреть, какие отзывы приходят от пользователей. Обычно, если можно установить и работать с примером приложения и убедиться, что базовая документация для запуска приложения работает, а также то, что приложение делает, этого может быть достаточно. Но, конечно, для внесения любого существенного вклада в документацию SDK потребуется знание языка программирования, на котором написан SDK.
Как уже упоминалось в разделе Описание и образцы кода, не нужно документировать, как работает конкретный язык, как работает SDK компании. Предположительно, если инженер загружает Java SDK для API, это происходит потому, что инженер уже знаком с Java. Однако, если API был реализован особым образом в Java, нужно объяснить, почему был принят этот подход. (Конечно, для понимания разницы между документированием Java и документированием определенного подхода в реализации Java также требуется понимание Java.)
Примеры SDK и приложений
В следующих примерах показана документация некоторых примеров SDK и примеров приложений.
OpenWeatherMap API
Хорошая идея, если можно разместить свои примеры приложений и SDK на GitHub. Хранение кода на GitHub преследует две цели: во-первых, оно обычно ложится бременем на разработку поддержки и тестирования примеров кода, а также реагирует на проблемы, которые пользователи могут регистрировать в проекте. Во-вторых, это упрощает предоставление полнофункционального кода, поскольку пользователи могут клонировать проект и немедленно начать работу с ним. Команда разработчиков также может легко выпускать обновления.
Paypal REST SDK

Heroku SDK
Как было упомянуто ранее, маловероятно, что получится внести значительный вклад в написание или просмотр документации SDK при незнании языком, для которого создан SDK. Группы разработчиков обычно не ожидают, что технические писатели будут знакомы с несколькими языками. Скорее всего, мы будем полагаться на разработчиков, которые владеют языками и средами для создания контента. Но для этого нам потребуется умело взаимодействовать с разработчиками и быть знакомыми с жаргоном и концепциями программирования.
Если разработчики говорят, что пользователи должны знать X, не стоит доверять их мнению из-за незнания языка. Лучше найти разработчиков на этом языке (даже своих разработчиков в других командах) для проверки документации. Если эти пользователи попросят больше подробностей, стоит связаться с командой разработчиков, чтобы предоставить нужные подробности.
Технические писатели, не знакомые с языком SDK, выступают в качестве посредников между авторами проекта и пользователями проекта. Технические писатели выявляют и устраняют пробелы в документации, и часто управляют публикацией и распространением документов. Но сам контент может быть слишком техническим для большинства технических писателей, играющих роль авторов контента. (Подробнее об этом в серии «Упрощенная сложность» статья под названием Be both a generalist and specialist through your technical acuity)
Amazon SDK
Но даже в этом случае существуют небольшие вариации от одной библиотеки к другой. Как инженеры гарантируют, что они используют то же описание для класса в Java, что и для Ruby и PHP? Инструменты для генерации документации или недостаточно умны, чтобы использовать фрагменты, или включены в общий онлайн-репозиторий. Обычно не используют переменные или другие методы одного источника. В результате, об одних и тех же понятиях могут быть разные описания в документации к разным SDK.
Google Cloud SDK
Google Cloud SDK предоставляет руководства по быстрому запуску для Linux, Debian, Ubuntu и других операционных систем. В руководствах объясняется, как устанавливать, настраивать и управлять командами SDK. Ссылка API для команд также включена.
Если взглянуть на Google Cloud SDK и Amazon SDK станет понятно, что при разнообразии SDK можно документировать и в ширь и в глубь. SDK специфичны для конкретного языка программирования, операционной системы или другого фреймворка, и поэтому попытка документировать эту категорию инструментов может быть сложной. Для документации SDK необходимо тесно сотрудничать с разработчиками и прислушиваться к отзывам пользователей.
👨💻 Практическое занятие: SDK
В своем найденном опен-сорс проекте найдем информацию об SDK для API. Ответим на следующие вопросы:
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
SDK (Software Development Kit)
Это может быть так просто, как реализация одного или нескольких интерфейсов прикладного программирования (API) в виде некоторых библиотек для взаимодействия с конкретным языком программирования или для включения сложного оборудования, которое может связываться с конкретной встроенной системой. Общие инструменты включают средства отладки и другие утилиты, часто представленные в интегрированной среде разработки (IDE). SDK также часто включают примерный код и вспомогательные технические примечания или другую подтверждающую документацию, чтобы помочь прояснить моменты, сделанные основным справочным материалом.
Содержание
Детали
Инженер-программист обычно получает SDK от разработчика целевой системы. Часто SDK можно загружать напрямую через Интернет или через торговые площадки SDK. Многие SDK предоставляются бесплатно, чтобы побудить разработчиков использовать систему или язык. Иногда это используется как маркетинговый инструмент. Свободно предлагаемые SDK могут по-прежнему монетизироваться на основе пользовательских данных, взятых из приложений, которые могут служить интересам крупных игроков в экосистеме, например операционной системе.
SDK для надстройки операционной системы (например, Apple QuickTime для классической MacOS) может включать в себя программное обеспечение надстройки, которое должно использоваться для целей разработки, но не обязательно для перераспределения вместе с разработанным продуктом. Между платформами, где можно разрабатывать приложения, которые могут, по крайней мере, запускаться в конфигурации системы без установленного надстройки, и использовать запрос среды времени исполнения в стиле Gestalt, чтобы определить, присутствует ли надстройка, и те, где приложение просто не запустится, можно создать единый двоичный файл, который будет работать на конфигурациях с и без дополнения, хотя и работает со сниженной функциональностью в последней ситуации.
Поставщики SDK для конкретных систем или подсистем могут иногда заменять более конкретный термин вместо программного обеспечения. Например, как Microsoft Corporation, так и Apple предоставляют комплекты разработки драйверов (DDK) [Источник 4] для разработки драйверов устройств.
Компоненты SDK
Первый компонент
Первый компонент — собственно программа или библиотека, которая позволяет разрабатывать новые программы или игры на базе чего-то, уже существующего.
Второй компонент
Второй — документация, которая в SDK, как правило, проста и лаконична. Она обычно делится на две части: Tutorial — пошаговый курс в стиле “Построим город за 10 минут” и раздел Reference — справочник по всему, что можно сделать с помощью данного SDK.
Третий компонент
Третий компонент обычно самый “вкусный” — примеры того, что можно сделать с помощью SDK. Во-первых, благодаря им можно вообще не вникать в SDK, но ознакомиться с тем, что же может пакет. Во-вторых, есть люди, которым даже относительно небольшой Tutorial читать лень. Так и не надо! Бери один из примеров, изменяй его и — вуаля! Новая программа или игра готова.
Группы SDK
Все SDK условно можно разделить на две большие группы.
Первая группа
Первые создаются разработчиками для тех, кто хочет сделать самостоятельную программу или игры. Пример такого SDK — DirectX, который установлен практически на любом компьютере. Но у простых смертных стоят только рабочие библиотеки — так называемый Redistributable. Для программистов же Microsoft Corporation подготовила полноценный пакет DirectX SDK весом 100 Мб. В нем есть все, что необходимо разработчику для создания компьютерной игры: собственно библиотеки, заголовочные файлы для MSVC++, примеры и многостраничная документация. Причем SDK распространяется совершенно бесплатно. Но как быть тем, кто программируют не на MSVC++, а в других средах, например в Delphi? Microsoft Corporation тут не помощник, но почти для любого из языков программирование есть адаптер, с помощью которого можно использовать возможности DirectX.
Вторая группа
Сообщество разработчиков SDK
Кстати, не стоит думать, что в одной игре или программе может быть использован только один пакет разработчиков. Для создания некоторых игр применяется до десятка SDK.Чаще всего SDK, только что сошедший с конвейера, содержит массу багов. Чтобы упростить разработку программ и игр, а заодно подчистить глюки движка, разработчики создают специализированное Community — Сообщество разработчиков SDK. В разных компаниях сообщество организовано по-разному, но чаще всего это форум, где разработчики могут обсудить тонкости использования SDK, посоветоваться и задать вопросы в службе технической поддержки. Иногда делается лист рассылки с новостями о развитии SDK и раздел документации, который постоянно обновляется. Приплюсуйте к этому статьи самих разработчиков, общение с другими пользователями — разработчиками SDK и самое важное — круглосуточную техническую поддержку по телефону, электронным средствам связи и даже с выездом в офис клиента. В России традиционно недооценивается эта составляющая и ценность службы технической поддержки вообще. Зато на Западе техподдержка ценится не меньше подробной документации. И стоимость этого компонента составляет значительную часть стоимости всего SDK.
Если к какой-то игре вышел SDK — это отличный повод совершенно бесплатно (лишь иногда — за небольшие деньги) создать свою собственную игру. Не надо программировать собственный движок, создавать множество дополнительных утилит, связывать все это вместе. Все уже сделано за нас. Нам нужно только изучить основы работы в SDK и. творить.
Основные направления развития SDK
SDK дает доступ к данным и позволяет расширить функциональные возможности приложений. Задумайтесь о собственном SDK если:
Для разработчика который использует SDK это:




