соединитель поиска winrt что это

В целом система Windows 8 рассчитана на тот же класс персональных компьютеров, что и Windows 7, то есть на машины на базе 32- или 64-разрядных микропроцессоров Intel х86. Система существует в обычном издании, называемом просто «Windows 8», и в издании «Windows 8 Pro» с дополнительными возможностями, ориентированными на квалифицированных энтузиастов и профессионалов. Как в Windows 8, так и в Windows 8 Pro могут выполняться программы двух типов:

Новые приложения Windows 8, часто называемые приложениями Windows Store.

Настольные приложения представляют собой традиционные Windows-программы, которые сейчас работают под управлением Windows 7 и взаимодействуют с операционной системой через интерфейс прикладного программирования Windows, называемый Win32 API. Для запуска настольных приложений в Windows 8 включен знакомый рабочий стол Windows. Для их разработки можно использовать, например, WPF (Windows Presentation Foundation).

представляют принципиальный отход от традиционной модели Windows. Эти программы обычно выполняются в полноэкранном режиме (хотя две программы могут совместно использовать экран в режиме Snap View) и, как правило, оптимизируются для планшетов и сенсорных экранов. Эти приложения приобретаются и устанавливаются только из магазина приложений, находящегося под управлением Microsoft. (Разработчик также может развертывать и тестировать приложения непосредственно из Visual Studio.)

С точки зрения прикладного программиста Windows Runtime напоминает Silverlight, хотя во внутренней реализации API не является управляемым. Вероятно, для программистов Silverlight самое очевидное различие связано с пространствами имен: пространства имен Silverlight, начинающиеся с System.Windows, были заменены пространствами, начинающимися с Windows.UI.Xaml.

соединитель поиска winrt что это. Смотреть фото соединитель поиска winrt что это. Смотреть картинку соединитель поиска winrt что это. Картинка про соединитель поиска winrt что это. Фото соединитель поиска winrt что это

Большинство приложений Windows 8 состоит не только из кода, но и из разметки, будь то отраслевой стандарт HTML (HyperText Markup Language) или принятый Microsoft язык XAML (extensible Application Markup Language). В частности, преимуществам разбиения приложения на код и разметку относится возможность распределения процесса разработки между программистами и дизайнерами.

В настоящее время существуют три основных варианта программирования приложений Windows 8, каждый из которых основан на определенном языке программирования и языке разметки:

C# или Visual Basic и XAML;

JavaScript и HTML5.

Для программистов JavaScript среда Windows Runtime дополняется библиотекой WinJS (Windows Library for JavaScript), предоставляющей ряд функций системного уровня для приложений Windows 8.

После долгих размышлений (и душевных терзаний) я решил, что этот раздел нашего сайта должен быть почти полностью посвящен разработке приложений WinRT на C# и XAML. Меня много лет убеждали в преимуществах управляемых языков для разработки и отладки, и на мой взгляд, C# лучше всех языков подходит для Windows Runtime. Надеюсь, код C# будет достаточно понятен программистам C++ и JavaScript.

Источник

Создание компонентов COM с помощью C++/WinRT

C++/WinRT можно использовать для разработки классических компонентов модели COM (или компонентных классов), так как эта проекция языка помогает создавать классы среды выполнения Windows. Дале показано, как это сделать.

Поведение C++/WinRT по умолчанию при использовании COM-интерфейсов

В C++/ WinRT winrt::implements является базовым шаблоном, от которого напрямую или косвенно наследуются классы среды выполнения и фабрики активации.

По умолчанию winrt::implements автоматически игнорирует классические интерфейсы COM. Любые вызовы QueryInterface (QI) классических COM-интерфейсов завершаются ошибкой E_NOINTERFACE. По умолчанию winrt::implements поддерживает только интерфейсы C++/WinRT.

Далее вы узнаете, что делать в тех случаях, когда интерфейсы не поддерживаются по умолчанию. Но сначала изучите пример кода, чтобы понять, что происходит по умолчанию.

А вот код клиента для получения класса Sample.

Включение поддержки классических интерфейсов COM

Хорошо то, что для вызова winrt::implementsдля включения поддержки классических интерфейсов COM требуется просто добавить файл заголовка перед добавлением заголовков C++/WinRT.

Затем можно as для классических интерфейсов COM, и код в примере выше будет скомпилирован.

В приведенном выше примере, если вы не включили поддержку классических интерфейсов COM на сервере (код, который реализует класс), даже после включения поддержки классических интерфейсов COM в клиенте (код, который использует класс) вызов as в клиенте завершится сбоем, так как QI для IInitializeWithWindow завершится ошибкой.

Локальный (не проецируемый) класс

Локальный класс — это такой класс, который реализуется и используется в одной и той же единице компиляции (в приложении или другом двоичном файле), поэтому для него отсутствует проекция.

Ниже приведен пример локального класса, который реализует только классические интерфейсы COM.

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

Опять же, IInitializeWithWindow не распознается как интерфейс COM, поэтому C++/WinRT игнорирует его. В случае с примером LocalObject результат игнорирования интерфейсов COM означает, что LocalObject не имеет каких-либо интерфейсов. Но каждый класс COM должен реализовывать по меньшей мере один интерфейс.

Простой пример COM-компонента

Более реалистичный и интересный пример

В остальной части этой статьи описан процесс создания минимального проекта консольного приложения, использующего C++/WinRT для реализации базового компонентного класса (компонента COM или класса COM) и фабрики классов. В примере приложения показано, как доставить всплывающее уведомление с помощью кнопки обратного вызова, а компонентный класс (который реализует интерфейс COM INotificationActivationCallback) позволяет запускать и вызывать приложение, когда пользователь нажимает эту кнопку во всплывающем уведомлении.

Дополнительные сведения об области применения компонента всплывающего уведомления можно найти в статье Отправка локального всплывающего уведомления. Однако ни один из примеров кода в этом разделе документации не использует C++/WinRT, поэтому мы рекомендуем вам использовать код, приведенный в этой статье.

Создание проекта консольного приложения для Windows (ToastAndCallback)

Начните с создания проекта в Microsoft Visual Studio. Создайте проект консольного приложения для Windows (C++/WinRT) и назовите его ToastAndCallback.

Откройте файл pch.h и добавьте #include перед добавлениями для любого заголовка C++/WinRT. Ниже приведен результат. Вы можете заменить содержимое файла pch.h этим фрагментом.

Откройте файл main.cpp и удалите директивы using, которые создает шаблон проекта. Вместо них вставьте следующий код (с помощью которого можно получить необходимые библиотеки, заголовки и имена типов). Ниже приведен результат. Вы можете заменить содержимое файла main.cpp этим фрагментом (мы также удалили код из main во фрагменте ниже, так как позже мы заменим эту функцию).

Сборка проекта еще не будет выполнена. После добавления кода вам будет предложено выполнить сборку и запустить проект.

Реализация компонентного класса и фабрики классов

В C++/WinRT вы реализуете компонентные классы и фабрики классов на основе базовой структуры winrt::implements. Вставьте этот код сразу после трех директив using, показанных выше (и перед main ), чтобы реализовать компонент активатора COM всплывающего уведомления.

Представленная выше реализация компонентного класса выполняется по той же схеме, которая продемонстрирована в статье Создание интерфейсов API с помощью C++/WinRT. Это значит, что вы можете реализовать интерфейсы COM и интерфейсы среды выполнения Windows по тому же принципу. Компоненты COM и классы среды выполнения Windows предоставляют доступ к функциям с помощью интерфейсов. Каждый интерфейс COM в конечном итоге наследуется от интерфейса IUnknown. Среда выполнения Windows основана на COM с одним исключением — интерфейсы среды выполнения Windows в конечном итоге наследуются от интерфейса IInspectableIInspectable наследуется от IUnknown).

В компонентном классе в приведенном выше коде мы реализуем метод INotificationActivationCallback::Activate. Этот метод является функцией, которая вызывается, когда пользователь нажимает кнопку обратного вызова во всплывающем уведомлении. Но прежде чем можно будет вызвать эту функцию, необходимо создать экземпляр компонентного класса. Это задача функции IClassFactory::CreateInstance.

Компонентный класс, который мы только что реализовали, известен как активатор COM для уведомлений. Он имеет свой идентификатор класса (CLSID) в виде идентификатора (типа GUID), который можно увидеть выше. Мы будем использовать этот идентификатор позже — в виде ярлыка меню «Пуск» и записи реестра Windows. Идентификатор CLSID активатора COM и путь к связанному с ним серверу COM (который является путем к исполняемому файлу, который мы здесь создаем) — это механизм, с помощью которого всплывающее уведомление получает сведения о классе, для которого нужно создать экземпляр при нажатии кнопки обратного вызова (независимо от того, нажато ли уведомление в Центре уведомлений).

Рекомендации для реализации методов COM

Методики для обработки ошибок и управления ресурсами можно применять совместно. Удобнее и практичнее использовать исключения, а не коды ошибок. Если вы используете идиому «получение ресурса — инициализация» (RAII), можно предотвратить выполнение явной проверки на коды ошибок и явного освобождения ресурсов. Такие явные проверки делают ваш код еще более запутанным, и в результате ошибки могут остаться незамеченными. Вместо этого используйте RAII и создавайте исключения. Таким образом, выделения ресурсов будут защищены от исключений, а код будет простым.

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

Реализация остальных функций и функции точки входа wmain

Удалите функцию main и вместо нее вставьте этот фрагмент кода, который включает в себя код для регистрации компонентного класса и код для доставки всплывающего уведомления, с помощью которого можно обратно запустить приложение.

Метод проверки примера приложения

Создайте приложение, а затем запустите его хотя бы один раз от имени администратора, чтобы запустить код регистрации и других настроек. Это можно сделать, запустив Visual Studio от имени администратора, а затем запустив приложение из Visual Studio. Щелкните Visual Studio правой кнопкой мыши на панели задач, чтобы отобразить список переходов. Щелкните Visual Studio правой кнопкой мыши в списке переходов и выберите Запуск от имени администратора. Примите запрос и откройте проект. Когда вы запускаете приложение, отображается сообщение, в котором указано, запущено ли приложение от имени администратора. Если это не так, регистрация и другие настройки не будут выполняться. Эту регистрацию и другие настройки необходимо запустить хотя бы один раз, чтобы приложение работало правильно.

Независимо от того, запущено ли приложение от имени администратора, нажмите клавишу T, чтобы отобразилось всплывающее уведомление. Затем вы можете нажать кнопку Call back ToastAndCallback (Обратный вызов ToastAndCallback) непосредственно из всплывающего уведомления или из центра уведомлений. Таким образом запустится приложение, будет создан экземпляр компонентного класса и будет выполнен метод INotificationActivationCallback::Activate.

Внутрипроцессный сервер COM

Создание проекта библиотеки динамической компоновки (DLL)

Вы можете начать задачу создания внутрипроцессного сервера COM, создав проект в Microsoft Visual Studio. Создайте проект Visual C++ Классическое приложение для Windows Библиотека динамической компоновки (DLL).

Чтобы добавить поддержку C++/WinRT в новый проект, выполните действия, описанные в разделе Добавление поддержки C++/WinRT в проекте классического приложения для Windows.

Реализация компонентного класса, фабрики класса и операций экспорта внутрипроцессного сервера

Откройте файл dllmain.cpp и добавьте в него приведенный ниже текст кода.

Если у вас уже есть библиотека DLL, которая реализует классы среды выполнения Windows C++/WinRT, то у вас уже будет функция DllCanUnloadNow, показанная ниже. Если вы хотите добавить компонентные классы в эту библиотеку DLL, вы можете добавить функцию DllGetClassObject.

Если у вас нет кода библиотеки шаблонов C++ для среды выполнения Windows (WRL), с которым вы хотите обеспечить совместимость, вы можете удалить части WRL из приведенного кода.

Поддержка для слабых ссылок

Ознакомьтесь также с разделом Слабые ссылки в C++/WinRT.

C++/WinRT (в частности, шаблон базовой структуры winrt::Implements) реализует IWeakReferenceSource, если тип реализует IInspectable (или любой интерфейс, который является производным от IInspectable).

Это связано с тем, что IWeakReferenceSource и IWeakReference предназначены для типов среды выполнения Windows. Таким образом, вы можете включить поддержку слабых ссылок для своего компонентного класса, просто добавив winrt::Windows::Foundation::IInspectable (или интерфейс, который является производным от IInspectable) к вашей реализации.

Реализация COM-интерфейса, производного от другого

Наследование интерфейса — это концепция классического COM (и в среде выполнения Windows она намеренно упразднена). Ниже вы можете увидеть пример наследования интерфейса.

Если вы создаете класс, который должен реализовывать, например, оба интерфейса IFileSystemBindData и IFileSystemBindData2, сначала потребуется объявить, что вы реализуете только производный интерфейс, как показано далее.

Далее нужно сделать так, чтобы интерфейс QueryInterface корректно обрабатывал вызовы (прямые и косвенные) к IID_IFileSystemBindData (базовый интерфейс) в экземпляре MyFileSystemBindData. Для этого можно создать специализацию для шаблона функцииwinrt::is_guid_of.

WinRT::is_guid_of принимает переменное число аргументов, поэтому ему можно предоставить список интерфейсов. Ниже показано, как создать специализацию таким образом, чтобы проверка IFileSystemBindData2 также включала проверку для IFileSystemBindData.

Специализация winrt::is_guid_of должна быть идентичной для всех файлов в проекте и должна быть видимой в точке, где интерфейс используется шаблоном winrt::implements или winrt::delegate. Как правило, для этого ее следует поместить в файл общего заголовка.

Источник

Начало работы с C++/WinRT

Сведения об установке Visual Studio для разработки с использованием C++/WinRT, включая установку и использование расширения C++/WinRT для Visual Studio (VSIX) и пакета NuGet (которые вместе обеспечивают поддержку шаблона проекта и сборки), приведены в разделе Поддержка Visual Studio для C++/WinRT.

Хотя мы рекомендуем выполнять разработку с последними версиями Visual Studio и пакетом Windows SDK, если вы используете Visual Studio 2017 (версия 15.8.0 или выше) и разрабатываете проект для пакета Windows SDK версии 10.0.17134.0 (Windows 10 версии 1803), то созданный проект C++/WinRT может не скомпилироваться и вызвать ошибку C3861 о том, что идентификатор from_abi не найден, и другие ошибки, полученные в base.h. Следует разрабатывать проект с более поздней (лучше соответствующей) версией Windows SDK или задать свойство проекта C/C++ Язык Режим совместимости: Нет (кроме того, если параметр /permissive- отображается в свойстве проекта C/C++ Язык Командная строка в разделе Дополнительные параметры, удалите его).

Краткое руководство по C++/WinRT

Отредактируйте файлы pch.h и main.cpp следующим образом.

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

Заголовки содержат API-интерфейсы Windows, проецируемые в C++/WinRT. Другими словами, для каждого типа Windows проекция C++/WinRT определяет эквивалентный тип для C++ (проецируемый тип). Проецируемый тип имеет то же полное доменное имя, что и тип в Windows, но он размещается в пространстве имен C++ winrt. Добавление этих инструкций include в предварительно скомпилированный заголовок сокращает время сборки.

Директивы using namespace являются необязательными, но удобными. Приведенный выше шаблон для таких директив (позволяющий выполнять поиск любых элементов в пространстве имен winrt по неполному имени) подходит при начале работы с новым проектом, при этом C++/WinRT — единственная проекция языка, которую вы используете внутри этого проекта. Если, с другой стороны, вы объединяете код C++/WinRT с кодом C++/CX или двоичным интерфейсом приложения SDK (ABI) (вы осуществляете перенос или взаимодействуете с этим кодом либо используете обе этих модели), изучите статьи Взаимодействие между C++/WinRT и C++/CX, Переход на C++/WinRT из C++/CX и Взаимодействие между C++/WinRT и интерфейсом ABI.

Вызов winrt::init_apartment инициализирует поток в среде выполнения Windows (по умолчанию — в многопотоковом подразделении). Вызов также инициализирует COM.

Разместите в стеке два объекта: они представляют URI блога о Windows и клиент синдикации. Мы создаем URI с помощью простого литерала широкой строки (дополнительные способы работы со строками см. в статье Обработка строк в C++/WinRT).

SyndicationClient::RetrieveFeedAsync является примером асинхронной функции среды выполнения Windows. Этот пример кода получает объект асинхронной операции от RetrieveFeedAsync и вызывает get для этого объекта, чтобы заблокировать вызывающий поток и дождаться результата (в данном случае это веб-канал синдикации). Дополнительные сведения о параллелизме и неблокирующих методах см. в статье Параллельная обработка и асинхронные операции с помощью C++/WinRT.

Этот код получает текст заголовка канала в виде объекта winrt::hstring (см. сведения в статье Обработка строк в C++/WinRT). Затем hstring выводится с помощью функции c_str, которая отражает шаблон, используемый в строках стандартной библиотеки C++.

Вам также не нужно обрабатывать коды возврата HRESULT. C++/ WinRT преобразует ошибки HRESULT в исключения, такие как winrt::hresult-error, для использования естественного и современного стиля программирования. Дополнительные сведения об обработке ошибок и примеры кода см. в статье Обработка ошибок в C++/WinRT.

Добавление поддержки C++/WinRT в проекте классического приложения для Windows

В этом разделе показано, как добавить поддержку C++/WinRT в проект классического приложения для Windows. Если у вас нет проекта классического приложения для Windows, вы можете выполнить эти шаги, чтобы создать его. Например, откройте Visual Studio и создайте проект Visual C++ Рабочий стол Windows Классическое приложение для Windows.

При желании можно установить расширение C++/WinRT для Visual Studio (VSIX) и пакет NuGet. Дополнительные сведения см. в разделе о поддержке C++/WinRT в Visual Studio.

Настройка свойств проекта

Перейдите к свойству проекта Общие Версия пакета SDK для Windows и выберите Все конфигурации и Все платформы. Убедитесь, что для версии пакета Windows SDK установлено значение 10.0.17134.0 (Windows 10 версии 1803) или выше.

Убедитесь, что у вас не возникает ситуация, описанная в разделе Почему мой новый проект не компилируется?.

Так как C++/WinRT использует компоненты стандарта C++17, необходимо установить для свойства проекта C/C++ Язык Стандарт языка C++ значение Стандарт ISO C++17 (/std:c++17).

Предварительно скомпилированный заголовок

Связывание

Языковая проекция C++/WinRT зависит от определенных свободных функций среды выполнения Windows (не являющихся членами) и точек входа, для которых требуется связывание с библиотекой WindowsApp.lib. В этом разделе описываются три варианта соответствия компоновщику.

Первый вариант — добавить в ваш проект Visual Studio все свойства и цели C++/WinRT MSBuild. Для этого установите пакет NuGet Microsoft.Windows.CppWinRT в проект. Откройте проект в Visual Studio проект, выберите Проект Управление пакетами NuGet. Обзор, введите или вставьте Microsoft.Windows.CppWinRT в поле поиска, выберите элемент в результатах поиска, а затем нажмите кнопку Установить, чтобы установить пакет для этого проекта.

Теперь вы можете выполнить компиляцию, связать и добавить код C++/WinRT в ваш проект (например, код, подобный тому, который показан в разделе Краткое руководство по C++/WinRT выше).

Три основных сценария для C++/WinRT

По мере работы с C++/WinRT и ознакомления с остальной частью документации вы, скорее всего, заметите, что есть три основных сценария. Они описаны в следующих разделах.

Использование API и типов среды выполнения Windows

Иными словами, это использование и вызовы API. Например, вы можете выполнять вызовы API для обмена данными по Bluetooth, потоковую передачу и воспроизведение видео, интеграцию с оболочкой Windows и т. д. В C++/WinRT реализована полная поддержка этого сценария. Дополнительные сведения см. в статье Использование API-интерфейсов с помощью C++/WinRT.

Создание API и типов среды выполнения Windows

Иными словами, это создание API и типов. Например, вы можете создавать описанные в разделе выше типы API, графические API, API хранилища и файловой системы, сетевые API и т. д. Дополнительные сведения см. в статье Создание API-интерфейсов в C++/WinRT.

Разработка API с помощью C++/WinRT — это более сложный процесс, чем их использование, так как вам нужно работать с IDL для определения API перед его реализацией. Описание процесса см. в статье Элементы управления XAML; привязка к свойству C++/WinRT.

Приложения XAML

Этот сценарий предполагает создания приложений и элементов управления в пользовательском интерфейсе на основе XAML. Работа с приложением, созданным с использованием XAML, включает процессы использования и разработки. Но так как сегодня XAML является основным средством описания пользовательского интерфейса в Windows, которое оказывает огромное влияние на среду выполнения Windows пропорционально этому, для него предусмотрен отдельный сценарий.

Помните, что XAML лучше всего сочетается с языками программирования, в которых используется рефлексия. В C++/WinRT, чтобы взаимодействовать с XAML, иногда необходимо выполнить некоторую дополнительную работу. Все эти случаи описаны в документации. Лучше всего начать со статей Элементы управления XAML; привязка к свойству C++/WinRT и Создание пользовательских (на основе шаблона) элементов управления XAML с помощью C++/WinRT.

Источник

C#/WinRT

Обоснование для использования C#/WinRT

C#/WinRT также поддерживает компоненты в пакете SDK для приложений для Windows, включая WinUI 3. Пакет SDK для приложений для Windows выводит из ОС собственные элементы управления пользовательским интерфейсом Майкрософт и другие собственные компоненты. Это позволяет разработчикам приложений использовать новейшие элементы управления и компоненты в Windows 10 версии 1809 и выше.

Новое

Последние выпуски C#/WinRT можно найти на странице заметок о выпуске в репозитории GitHub.

Использование

Создание и распространение сборки взаимодействия

Ссылка на сборку взаимодействия

Как правило, на сборки взаимодействия C#/WinRT ссылаются проекты приложений. Однако на них также могут ссылаться промежуточные сборки взаимодействия. Например, сборка взаимодействия WinUI ссылается на сборку взаимодействия Windows SDK.

Если вы распространяете сторонний компонент WinRT без официальной сборки взаимодействия, для создания собственных частных источников проекции в проекте приложения можно выполнить процедуру создания сборки взаимодействия. Мы не рекомендуем использовать этот подход, так как он может привести к конфликтам проекций одного и того же типа в рамках одного процесса. Для предотвращения таких ситуаций используются пакеты NuGet, созданные по схеме семантического версионирования. Предпочтительно использовать официальную сборку взаимодействия стороннего производителя.

Поддержка внедрения для типов WinRT (предварительная версия)

Дополнительные сведения см. в документации по встраиванию C#/WinRT в нашем репозитории.

Активация типа WinRT

C#/WinRT поддерживает активацию типов WinRT, размещенных в операционной системе, а также сторонних компонентов, например Win2D. Поддержка активации сторонних компонентов в классическом приложении включается путем активации WinRT без регистрации, доступной в Windows 10 версии 1903 и более поздних. Если компонент создан специально для приложений UWP, для нее также может потребоваться пакет серверов пересылки VCRT.

C#/WinRT также предоставляет резервный путь активации, если Windows не удается активировать тип, как описано выше. В этом случае C#/WinRT пытается определить расположение собственной библиотеки DLL реализации на основе полного имени типа, постепенно удаляя элементы. Например, резервная логика попытается активировать тип Contoso.Controls.Widget из перечисленных ниже модулей в такой последовательности:

C#/WinRT использует для поиска библиотеки DLL реализации альтернативный порядок поиска LoadLibrary. Пакет приложения, в котором предусмотрено использование такого резервного способа, наряду с модулем приложения должен включать библиотеку DLL реализации.

Распространенные ошибки и их устранение

Ошибка: «Windows Metadata not provided or detected» (Метаданные Windows не предоставлены или не обнаружены).

Error CS0246: The type or namespace name «Windows» could not be found (are you missing a using directive or an assembly reference?) (Ошибка CS0246. Не удалось найти тип или имя пространства имен Windows (возможно, отсутствует директива using или ссылка на сборку)).

Сообщение об ошибке или предупреждающее сообщениеПричина
Предупреждение MSB3277. Обнаружены конфликты между разными версиями WinRT.Runtime или Microsoft.Windows.SDK.NET, разрешить которые не удалось.Это предупреждение сборки возникает при ссылке на библиотеку, которая предоставляет типы Windows SDK на своей поверхности API.
Ошибка CS1705. Сборка «AssemblyName1» использует «TypeName» более поздней версии, чем сборка «AssemblyName2», на которую дается ссылкаЭта ошибка компилятора сборки возникает при указании и использовании типов Windows SDK, представленных в библиотеке.
System.IO.FileLoadExceptionЭта ошибка среды выполнения может возникнуть при вызове определенных API в библиотеке, которая не предоставляет типы Windows SDK.

Известные проблемы

Известные проблемы и критические изменения указаны в репозитории C#/WinRT в GitHub.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *