Posted on 27. June 2019

XAML Islands v1 - Обновления и план выпуска

На конференции Microsoft Build было объявлено, что Windows 10 May 2019 Update (версия 1903) будет включать XAML Islands v1.

Ниже Вы можете ознакомиться с более подробной информацией плана выпуска и двух рабочих направлений в процессе разработки: .NET обертки и поддержка Visual Studio 2019.

Что такое XAML Islands?

XAML Islands позволяют .NET и нативным Win32 приложениям размещать элементы управления UWP XAML. Вы можете расширить возможности и функциональность Ваших существующих десктопных приложений с помощью последних инноваций пользовательского интерфейса, ранее доступных только для UWP приложений. Например, Вы можете использовать такие элементы управления, как ColorPicker, InkCanvas, CalendarView и NavigationView, в Ваших существующих C ++ Win32, Windows Forms и WPF приложениях.

С XAML Islands Вы можете модернизировать Ваше приложение в собственном стиле без необходимости переписывать его заново - просто используйте элементы управления UWP XAML.

Как использовать XAML Islands?

Первый компонент - API  UWP XAML хостинг. Это набор API Windows 10 (Windows Runtime классы и COM интерфейсы), которые поставляются на Windows 10 в версии 1903. Если у Вас есть нативное C ++ Win32 приложение, использующее Common Controls библиотеку (Comctl32.dll) или MFC, и Вам необходимо модернизировать Ваш интерфейс, смело используйте эти API.

Второй компонент состоит из обернутых .NET элементов управления и элементов управления хоста. Это набор оберток API  UWP XAML хостинга в Windows Community Toolkit как для Windows Forms, так и для WPF разработчиков.

Каковы требования для использования XAML Islands в Ваших приложениях?

  • Windows 10 версии 1903 и выше: Независимо от того, есть ли у Вас Win32 или .NET приложение, текущая версия XAML Islands работает только с приложениями для Windows 10 версии 1903 и выше.
  • Windows 10 SDK версия 1903 (10.0.18362): этот SDK содержит заголовки, библиотеки, метаданные и инструменты для сборки Windows 10 приложений, используя XAML Islands.
  • Упакованное десктопное приложение: Десктопные приложения можно упаковать в MSIX для доступа к определенным Windows 10 API, таким как живые тайлы и уведомления. Для упаковки Вашего приложения необходимо использовать Windows Application Packaging Project. Упаковка Вашего приложения не означает, что оно будет работать в изолированной программной среде с ограниченными UWP привилегиями. Вместо этого Ваше упакованное Win32 приложение будет работать в режиме полного доверия. Упакованные с XAML Islands приложения будут оптимизированы для разработчиков, которые работают с Visual Studio 2019.

Обратите внимание: В этом выпуске неупакованные приложения будут иметь ограниченную поддержку, но возможны некоторые сценарии.

  • Visual Studio 2019: только Visual Studio 2019 будет иметь набор инструментов, необходимый для сборки десктопных приложений с использованием XAML Islands.
  • .NET Core 3.0: эта среда полностью поддерживается для .NET приложений. Некоторые сценарии также будут работать в приложениях, предназначенных для .NET Framework 4.7.2, но для этих приложений существуют некоторые ограничения, например использование управляемых сторонних элементов управления.
Какие .NET Core и .NET Framework версии взаимодействуют с XAML Islands?

Обернутые .NET элементы управления поддерживаются в .NET Framework и .NET Core 3. Хост-элемент .NET (WindowsXamlHost) доступен для Windows Forms и WPF. Этот элемент управления позволяет хостить UWP XAML контент. Если UWP XAML контент - это элемент управления, который поставляется с Windows 10, такой как ColorPicker или NavigationView, Вы можете использовать .NET Framework 4.7.2 или NET Core 3.

Если UWP XAML контент - это пользовательский UWP элемент управления, который внедрен в сторонний WinRT компонент, то .NET версия, на которую Вы можете ориентироваться, зависит от того, каким образом был разработан пользовательский элемент управления. Он будет считаться сторонним WinRT компонентом, если он установлен одним из следующих способов: в отдельном UWP проекте, в Nuget пакете или по ссылке на файл.

  • Если сторонний WinRT компонент является нативным (написан на C ++ / WinRT), пользовательский элемент управления может использоваться как .NET Framework 4.7.2, так и как NET Core 3.
  • Если сторонний WinRT компонент является управляемым (например, написан на C#), пользовательский элемент управления может использоваться только на .NET Core 3. Полная версия .NET Framework не полностью поддерживается в этом сценарии, и она требует некоторой кросс-компиляции для того, чтобы работать на всех.

Таблица поддержки платформы для XAML Islands в1:

Если Ваше приложение нацелено на .NET Core 3, независимо от того, является ли сторонний WinRT компонент, который Вы размещаете, нативным или управляемым, Вы получите оптимизированный опыт работы. Если Ваше приложение нацелено на полную .NET Framework версию, Вы получите оптимизированный опыт, только если Ваш сторонний WinRT компонент является нативным.

Как использовать XAML Islands в Вашем нативном C ++ Win32 приложении?

Если Вы C ++ разработчик, Вам нужно использовать API UWP XAML хостинга. Вот одни из основных шагов:

  • Сначала инициализируется UWP XAML структура в текущем потоке (Вы можете использовать статический InitializeForCurrentThread метод для WindowsXamlManager класса).
  • Создайте DesktopWindowXamlSource объект, который требует HWND от Вашего приложения. DesktopWindowXamlSource создаст ChildWindow, где Вы сможете разместить XAML контент.
  • Вам нужно позаботиться о фокусировке клавиатуры, когда пользователи переходят на XAML Islands и выходят из них. Этот DesktopWindowXamlSource объект предоставляет событие для распределения фокусировки клавиатуры.

Вы можете ознакомиться с более подробной информацией здесь: https://docs.microsoft.com/en-us/windows/apps/desktop/modernize/using-the-xaml-hosting-api

Как использовать XAML Islands в Вашем .NET приложении?

Windows Community Toolkit версии 6.0.0 (на данный момент в preview-версии) предоставляет несколько NuGet пакетов для Windows Forms и WPF, которые Вы можете добавить в Ваш проект.

Элемент управления WindowXamlHost является хост-элементом, в котором можно размещать все типы UWP XAML контента.

Обернутые элементы управления создаются для работы с большинством событий и свойств небольшого набора определенных UWP элементов в WPF и Windows Forms элементы. В настоящее время предоставляются следующие упакованные элементы управления:

  • InkCanvas оборачивает UWP InkCanvas и InkToolbar и предоставляет поверхность и панели инструментов для взаимодействия с Ink пользователем.
  • MediaPlayerElement позволяет Вашим .NET приложениям использовать современные аудио- и видео-кодеки и предоставляет более высокую производительность для потоковой передачи и воспроизведения медиа контента.
  • MapControl позволяет использовать в Ваших приложениях последние инновации картографической платформы, например, больше фотореалистичных карт.
  • SwapChainPanel (preview-версия) позволяет добавлять DirectX 12 контент в Ваше приложение.

Какие современные веб элементы доступны для десктопных приложений?

Windows Forms и WPF приложения используют элемент управления WebBrowser, который использует рендеринг Internet Explorer и поэтому не поддерживает HTML5 и другие функции. Windows Community Toolkit содержит Windows Forms и WPF обертки для UWP WebView элемента, который использует Edge в качестве инструмента рендеринга, поэтому эти приложения могут размещать веб-контент, который требуюется на HTML5.

Windows Community Toolkit также содержит элемент управления WebViewCompatible. Этот элемент использует либо WebBrowser, либо WebView рендеринг, в зависимости от Windows версии, на которой работает приложение:

  • Приложения для Windows 10 версии 1803 и выше будут использовать текущий инструмент WebView рендеринга.
  • Приложения для более ранних Windows версий, таких как Windows 8.1, будут использовать более старый инструмент WebBrowser рендеринга.

Используют ли XAML Islands другой поток?

Нет. XAML Islands работают в том же потоке пользовательского интерфейса Вашего десктопного приложения. Вы можете сразу получить доступ ко всем UWP XAML объектам из Вашего кода. Это отличается от Windows Forms и WPF технологий.

Есть ли инструкции?

XAML Islands Lab предоставляет пошаговые инструкции по использованию обернутых элементов управления и хост-элементов в Windows Community Toolkit для добавления UWP элементов управления в уже существующее WPF приложение. Эта работа включает в себя полный код для WPF приложения, а также подробные инструкции для каждого этапа.

Этот C ++ Win32 образец демонстрирует полную реализацию размещения пользовательского UWP элемента управления в неупакованном C ++ Win32 приложении (то есть приложении, которое не встроено в MSIX пакет).

Для WPF .NET Core 3 приложения, которое использует UWP проект в User Control, Вы можете использовать следующее:

Windows Community Toolkit содержит демонстрационные версии для проверки обернутого элемента управления и хост-элемента.

Каков план выпуска XAML Islands в1?

1. Windows 10 May 2019 Update содержит первый выпуск XAML Islands (в1).

2. Windows Community Toolkit, версии 6.0, будет содержать WindowsXamlHost и упакованные элементы управления для .NET Framework.

  • Это запланировано на лето 2019 года.
  • Будет preview-версия 6.1, которая будет содержать WindowsXamlHost .NET Core 3 версию и упакованные элементы управления. Это обновление будет выпущено вместе с .NET Core 3 - во второй половине 2019 года.

3. Visual Studio 2019 обновится во второй половине 2019 года вместе с .NET Core 3, который будет поддерживать XAML Islands в1. Помните, что только с упакованными приложениями Вы получите оптимизированный опыт работы.

Каков план выпуска XAML Islands в2?

XAML Islands в2 будет поставляться в составе WinUI 3.0. Следовательно, вторая версия будет поддерживать те же Windows 10 версии, что и WinUI 3.0. Основной выпуск WinUI v3 запланирован на первую половину 2020 года. WinUI - это проект с открытым исходным кодом, и Вы можете следить за последними событиями здесь: https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md 

Где оставить отзыв о XAML Islands?





Posted on 11. June 2019

Перемещение образца WPF приложения на .NET Core 3 (Часть 1)

Ольга Гавриш недавно написала пост о том, как перенести WinForms приложение с .NET Framework на .NET Core. В этом блог посте будут выполняться шаги по переносу WPF-приложения на .NET Core 3. Многие из этих шагов будут знакомы Вам из поста Ольги, но здесь добавлены некоторые дополнительные общие зависимости, с которыми пользователи могут столкнуться, например, использование WCF  клиента или сторонних пакетов пользовательского интерфейса.

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

Эти блог посты не посвящены какой-либо конкретной проблеме переноса. В них описываются шаги, необходимые для переноса WPF приложения. Если есть конкретные темы по миграции на .NET Core, которые Вы хотели бы изучить более детально, сообщите об этом в комментариях.

Видео инструкции

Если предпочитаете видео инструкции по перемещению приложения, Вы можете просмотреть ролики на YouTube, посвященный переносу приложения.

О примере

Для этого примера было написано простое приложение для торговли товарами под названием «Bean Trader». У пользователей приложения есть учетные записи с разным количеством бобов (которые бывают четырех разных цветов). С этим приложением, пользователи могут предлагать и принимать сделки с другими пользователями. Приложение не очень большое (около 2000 строк кода), но, с точки зрения сложности, на шаг впереди «Hello World». Оно создано для того, чтобы Вы могли видеть некоторые проблемы, с которыми пользователи могут столкнуться при переносе реальных приложений.

Интересные зависимости в приложении:

  • Соединение WCF с бэкенд-трейдингом через двойной NetTcp канал
  • Моделирование пользовательского интерфейса и MahApps.Metro диалогов
  • Внедрение зависимостей с помощью Castle.Windsor (хотя, многие DI-решения, включая Microsoft.Extensions.DependencyInjection, могут использоваться в этом сценарии)
  • Настройки приложения в app.config и реестре
  • Различные ресурсы и resx файлы

Исходный код этого приложения доступен на GitHub. Исходный источник (до переноса) доступен в NetFx\BeanTraderClient каталоге. Последнее перемещенное приложение находится в NetCore\BeanTraderClient директории. Бэкэнд-сервис, с которым должно соединяться приложение, доступен в BeanTraderServer папке.

Отказ

Помните, что этот образец приложения создан для демонстрации проблем перемещения на .NET Core и их решений. Он не предназначен для демонстрации лучших WPF возможностей. На самом деле, некоторые анти-паттерны были намеренно добавлены в приложение для воспроизведения некоторых проблем при перемещении.

Обзор процесса перемещения

Процесс перехода с .NET Framework на .NET Core состоит из четырех основных этапов.

1. Во-первых, полезно подготовиться к перемещению, разобраться в зависимостях проекта и перемещать проект в легко переносимом состоянии.

  1. Используйте такие инструменты, как .NET Portability Analyzer, для изучения .NET Framework зависимостей.
  2. Также стоит обновить NuGet ссылки для использования формата и, возможно, придется обновить версии NuGet пакетов.

2. Во-вторых, файл проекта должен быть обновлен. Это можно сделать либо путем создания нового файла проекта, либо путем изменения текущего файла.

3. В-третьих, исходному коду могут потребоваться некоторые обновления, основанные на различных API, как в .NET Core, так и в .NET Core версиях необходимых NuGet пакетов. Это обычно самый продолжительный этап.

4. В-четвертых, не забудьте протестировать перенесенное приложение! Некоторые .NET Core/.NET Framework различия не проявляются до времени выполнения (хотя существуют Roslyn анализаторы кода, помогающие идентифицировать эти случаи).

Шаг 1: Подготовка

Образец клонирован и готов к работе? Супер, теперь можно начать!

Основная проблема при перемещение .NET Framework приложения на .NET Core заключается в том, что его зависимости в .NET Core могут работать по-разному (или вообще не работать!). Сейчас перемещение стало намного проще, чем раньше - многие NuGet пакеты теперь нацелены на .NET Standard, и, начиная с .NET Core 2.0, .NET Framework и .NET Core стали довольно похожими. Тем не менее, некоторые различия остаются (как в поддержке NuGet пакетов, так и в доступных .NET API).

Обновление NuGet ссылок к

Старые .NET Framework проекты обычно перечисляют свои NuGet зависимости в packages.config файле. Однако новый формат файла проекта в SDK стиле по-разному ссылается на NuGet пакеты. Для ссылки на NuGet зависимости он использует элементы в самом csproj файле (а не в отдельном файле конфигурации). К счастью, csproj файлы старого стиля также могут использовать современный синтаксис.

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

  1. Это стиль NuGet ссылки, который потребуется для нового файла .NET Core проекта. Если Вы уже используете , эти элементы файла проекта можно скопировать и вставить непосредственно в новый проект.
  2. В отличие от packages.config файла, элементы ссылаются только на самые важные зависимости, от которых напрямую зависит Ваш проект. Все остальные переходные NuGet пакеты будут определены во время восстановления и записаны в автоматически сгенерированный obj\project.assets.json файл. Это значительно упрощает рассуждение о том, какие зависимости есть у Вашего проекта, что полезно при определении того, будут ли необходимые зависимости работать на .NET Core или нет.

Итак, первый шаг к перемещению Bean Trader образца - это подготовить его к использованию NuGet ссылок. С Visual Studio это очень легко. Просто щелкните правой кнопкой мыши по packages.config файлу проекта в Visual Studio Solution Explorer и выберите «Перенести packages.config в PackageReference».

Появится диалоговое окно, показывающее вычисленные самые важные NuGet зависимости и спрашивающее, какие другие NuGet  пакеты должны быть перемещены к этому уровню. Ни один из этих других пакетов не должен быть высокого уровня для Bean Trader образца, поэтому Вы можете снять все эти флажки. Затем нажмите «ОК», и packages.config файл будет удален, а элементы будут добавлены в файл проекта.

Ссылки в стиле не хранят NuGet пакеты локально в папке «пакетов» (вместо этого они хранятся глобально, в качестве оптимизации), поэтому после перемещения Вам нужно будет отредактировать csproj файл и удалить элементы, относящиеся к FxCop анализаторам, которые ранее были из .. \packages директории.

Просмотрите NuGet пакеты

Теперь, когда можно увидеть NuGet пакеты верхнего уровня, от которых зависит проект, есть возможность проверить, будут ли эти пакеты доступны в .NET Core или нет.

Вы можете узнать, поддерживается ли .NET Core пакет, взглянув на его зависимости от nuget.org. Сайт fuget.org, созданный сообществом, также отображает эту информацию в верхней информационной части страницы пакета.

При нацеливании на .NET Core 3 должны работать любые пакеты, нацеленные на .NET Core или .NET Standard (поскольку .NET Core реализует .NET Standard). Вы также можете использовать пакеты, нацеленные на .NET Framework, но это представляет некоторый риск. Разрешены зависимости от .NET Core к .NET Framework, поскольку .NET Core и .NET Framework достаточно похожи, поэтому такие зависимости часто работают без проблем. Однако, если пакет пытается использовать .NET API, которого нет в .NET Core, Вы столкнетесь с трудностями во время работы. По этой причине Вы должны ссылаться на .NET Framework пакеты только тогда, когда другие опции недоступны, и помнить, что это создаст нагрузку на тестирование.

В случае примера Bean Trader есть следующие NuGet  зависимости:

  • Castle.Windsor, версия 4.1.1. Этот пакет предназначен для .NET Standard 1.6, поэтому он будет работать на .NET Core.
  • Microsoft.CodeAnalysis.FxCopAnalyzers, версия 2.6.3. Это метапакет, поэтому неясно, какие платформы он поддерживает, но в документации указано, что его новейшая версия (2.9.2) будет работать как для .NET Framework, так и для .NET Core.
  • Nito.AsyncEx, версия 4.0.1. Этот пакет не предназначен для .NET Core, но более новая версия 5.0 сможет это сделать. Это часто происходит при миграции, потому что многие NuGet пакеты за последний год добавили поддержку .NET Standard, но более старые проекты будут использовать более старые версии этих пакетов. Если разница версий незначительна, ее можно легко обновить до более новой версии. Поскольку это серьезное изменение версии, Вы должны быть осторожны при обновлении, поскольку в пакете могут произойти критические изменения.
  • MahApps.Metro, версия 1.6.5. Этот пакет также не предназначен для .NET Core, но имеет более новую preview-версию (2.0-alpha).

Все NuGet зависимости из примера Bean Trader предназначены либо для .NET Standard/.NET Core, либо для их более новых версий, поэтому у Вас вряд ли возникнут какие-либо проблемы с блокировкой.

Если бы существовали пакеты, не предназначенные для .NET Core или .NET Standard, пришлось бы подумать о других альтернативах:

  • Есть ли другие похожие пакеты, которые можно использовать вместо этих? Иногда NuGet авторы публикуют отдельные .Core версии библиотек, специально предназначенные для .NET Core. Пакеты Enterprise Library - пример того, как сообщество публикует альтернативы с .NetCore расширением.
  • Если альтернатив нет, Вы можете продолжить использование пакетов, нацеленных на .NET Framework, имея в виду, что Вам потребуется тщательно их протестировать после запуска на .NET Core.

Обновите NuGet пакеты

Если у Вас есть такая возможность, обновите версии этих пакетов до тех, которые нацелены на .NET Core или .NET Standard на этом этапе, чтобы обнаружить и устранить любые критические изменения.

Если Вы не хотите вносить какие-либо существенные изменения в существующую версию .NET Framework приложения, подождите, пока у Вас не появится новый файл проекта для .NET Core. Тем не менее, предварительное обновление NuGet пакетов до версий, совместимых с .NET Core, упрощает процесс миграции, когда наступает время создания нового файла проекта, и уменьшает количество различий между .NET Framework и .NET Core. версиями приложения.

В случае примера Bean Trader все необходимые обновления могут быть легко выполнены (с помощью диспетчера NuGet пакетов в Visual Studio) с одним исключением: обновление с MahApps.Metro 1.6.5 до 2.0 выявляет серьезные изменения, связанные с API-интерфейсами для управления темами и акцентами.

В идеале приложение должно быть обновлено, чтобы использовать более новую версию пакета (так как оно, скорее всего, будет работать на .NET Core). Однако в некоторых случаях это может быть неосуществимо. В этом случае MahApps.Metro не будет обновляться, потому что этот туториал сосредоточен на переходе на .NET Core 3, а не на MahApps.Metro 2. Кроме того, это .NET Framework зависимость с низким уровнем риска, поскольку приложение Bean Trader выполняет только небольшую часть MahApps.Metro. Конечно, после завершения миграции потребуется тестирование, чтобы убедиться, что все работает.

После обновления NuGet пакетов до последних версий группа элементов в файле проекта Bean Trader должна выглядеть следующим образом:

Анализ переносимости .NET Framework

Теперь рассмотрим зависимости .NET Framework API. Инструмент .NET Portability Analyzer полезен для понимания того, какие из .NET API, которые использует Ваш проект, доступны на других .NET платформах.

Этот инструмент поставляется в виде Visual Studio плагина, инструмента командной строки или в виде простого графического интерфейса пользователя, который упрощает его параметры и всегда сообщает о совместимости с .NET Core 3.

В предыдущем посте Оля Гавриш использовала графический интерфейс, поэтому в этом будет использоваться интерфейс командной строки. Необходимые шаги:

1. Загрузите API Portability Analyzer.

2. Убедитесь, что приложение .NET Framework для переноса собралось успешно.

3. Запустите API-порт с помощью командной строки, например:

  1. ApiPort.exe analyze -f -r html -r excel -t ".NET Core"
  2. Аргумент -f указывает путь, содержащий двоичные файлы для анализа. Аргумент -r указывает, какой формат выходного файла Вам нужен. Будут полезны как HTML, так и Excel форматы. Аргумент -t указывает, с какой .NET платформой будет анализироваться использование API. В данном случае нужен .NET Core, поскольку именно эта платформа является целевой.  Так как версия не указана, по умолчанию для API Port используется последняя версия платформы (в данном случае - .NET Core 3.0).

Когда Вы откроете HTML-отчет, в первом разделе будут перечислены все проанализированные двоичные файлы и какой процент используемых им .NET API доступен на целевой платформе. Сам по себе этот процент не очень значимый. Что более полезно, так это увидеть конкретные API, которые отсутствуют. Для этого щелкните имя сборки или прокрутите вниз до отчетов по отдельным сборкам.

Вам нужно беспокоиться только о тех сборках, для которых у Вас есть исходный код. В отчете Bean Trader ApiPort перечислено много двоичных файлов, но большинство из них относится к NuGet пакетам. Например, Castle.Windsor показывает, что он зависит от некоторых System.Web API интерфейсов, отсутствующих в .NET Core. Это не проблема, потому что Castle.Windsor поддерживает .NET Core. Обычно NuGet пакеты имеют разные двоичные файлы для использования на разных  .NET платформах, поэтому независимо от того, использует ли .NET Framework версия Castle.Windsor System.Web API-интерфейсы или нет, это не имеет значения, если пакет также предназначен для .NET Standard или. NET Core.

В случае примера Bean Trader единственный двоичный файл, который нужно изучить - BeanTraderClient, и в отчете показано, что отсутствуют только два .NET API - System.ServiceModel.ClientBase.Close и System.ServiceModel.ClientBase.Open

Это вряд ли избавит от проблем, потому что WCF Client API (в основном) поддерживаются в .NET Core, поэтому для этих центральных API должны быть альтернативы. Фактически, глядя на System.ServiceModel .NET Core (используя https://apisof.net), можно увидеть, что в .NET Core есть асинхронные альтернативы.

Исходя из этого отчета и предыдущего анализа NuGet зависимостей, похоже, что не должно быть серьезных проблем при переносе образца Bean Trader в .NET Core. Следующий шаг для начала переноса.

Шаг 2: Перемещение файла проекта

Поскольку .NET Core использует новый формат файла проекта в SDK стиле, существующий csproj файл не будет работать. Нам понадобится новый файл проекта для .NET Core версии приложения Bean Trader. Если Вам не нужно было собирать .NET Framework версию приложения в будущем, Вы могли бы просто заменить существующий csproj файл. Но часто разработчики хотят создавать обе версии - особенно тогда, когда .NET Core 3 все еще находится в режиме предварительного просмотра.

Есть три варианта, где должен размещаться новый csproj файл, каждый из которых имеет свои плюсы и минусы:

 

  1. Вы можете использовать многоцелевой таргетинг (указав несколько целей), чтобы получить один файл проекта, который создаст .NET Core и .NET Framework версии решения. В будущем это, вероятно, будет лучшим вариантом. Однако, на данный момент, некоторые функции плохо работают с многоцелевым таргетингом. Поэтому сейчас рекомендуется иметь отдельные файлы проекта для версий приложений, ориентированных на .NET Core и .NET Framework.
  2. Вы можете поместить новый файл проекта в другую директорию. Это облегчит разделение сборки, но означает, что Вы не сможете использовать преимущества новой системы проектов, позволяющей автоматически добавлять C# и XAML файлы. Также необходимо будет добавить элементы для XAML ресурсов, чтобы они были встроены с правильными путями.
  3. Вы можете поместить новый файл проекта в ту же директорию, что и текущий файл проекта. Это позволяет избежать проблем, связанных с предыдущим параметром, но приведет к конфликту obj и bin папок для двух проектов. Если Вы одновременно открываете только один из проектов, это не будет проблемой. Но если они оба будут открыты одновременно, Вам нужно будет обновить проекты, чтобы использовать разные пути вывода и промежуточные пути вывода.

 

Лучший вариант - пункт 3 (чтобы файлы проекта работали бок о бок), поэтому этот подход будет использоваться в качестве примера.

Для создания нового файла проекта, обычно используется команда dotnet new wpf во временном каталоге, чтобы сгенерировать файл проекта, а затем скопировать / переименовать его в нужное место. Существует также созданный сообществом инструмент CsprojToVs2017, который может автоматизировать некоторые процессы миграции. Этот инструмент полезен, но все еще нуждается в улучшении, чтобы  все детали миграции были верны. Одна конкретная область, которую инструмент не обрабатывает до конца, - это миграция NuGet пакетов из packages.config файлов. Если инструмент запускается в файле проекта, который все еще использует файл packages.config для ссылки на NuGet пакеты, он автоматически мигрирует в элементы, но добавит элементы для всех пакетов, а не только для верхнего уровня. Однако если Вы уже перешли на элементы с помощью Visual Studio, то этот инструмент может помочь с остальной частью конвертирования. Перенос вручную даст лучшие результаты, если у Вас только несколько проектов. Но если Вы портируете десятки или сотни файлов проекта, то такой инструмент, как CsprojToVs2017, может Вам помочь.

Так что, запустите dotnet new wpf во временном каталоге и переместите созданный csproj файл в BeanTraderClient папку и переименуйте его в BeanTraderClient.Core.csproj.

Поскольку новый формат файла проекта автоматически включает C#, resx и XAML файлы, которые он находит в своей директории, файл проекта уже почти готов! Чтобы завершить миграцию, одновременно откройте старые и новые файлы проекта и просмотрите старый, чтобы увидеть, нужно ли переносить какую-либо информацию, содержащуюся в нем. В этом случае следующие элементы должны быть скопированы в новый проект:

 

  • , и свойства должны быть скопированы.
  • Также нужно добавить false свойство в новый файл проекта, поскольку образец Bean Trader включает атрибуты уровня сборки в файле AssemblyInfo.cs (например, [AssemblyTitle]). По умолчанию новые проекты в SDK стиле автоматически генерируют эти атрибуты на основе свойств в csproj файле. Поскольку в этом случае это не нужно (автоматически сгенерированные атрибуты будут конфликтовать с теми что из AssemblyInfo.cs), Вам нужно отключить автоматически сгенерированные атрибуты с помощью .
  • Хотя resx файлы автоматически добавляются в качестве встроенных ресурсов, другие элементы, например изображения, не добавляются. Итак, скопируйте элементы для того, чтобы вставить изображения и значки файлов. Вы можете упростить png ссылки на одну строку, используя поддержку нового формата файла проекта для сокращения шаблонов: .
  • Аналогично, элементы будут включены автоматически, но по умолчанию они не будут скопированы в директорию выхода. Поскольку проект Bean Trader включает в себя элемент, который копируется в директорию выхода (с использованием PreserveNewest), необходимо обновить автоматически заполненный элемент для этого файла, например:
  • Образец Bean Trader содержит XAML файл (Default.Accent.xaml) в качестве Содержимого (а не Страницы), поскольку темы и акценты, определенные в этом файле, загружаются из XAML файла во время выполнения, а не встраиваются в само приложение. Новая система проекта автоматически содержит этот файл в виде <Страницы>, разумеется, поскольку это XAML файл. Итак, нужно удалить как XAML файл, так и страницу () и добавить его в качестве содержимого:
  • Наконец, добавьте NuGet ссылки, скопировав со всеми элементами. Если бы ранее NuGet пакеты не обновлялись до версий, совместимых с .NET Core, Вы могли бы сделать это сейчас, когда ссылки на пакеты находятся в специфичном для .NET Core проекте.

 

На этом этапе должна появиться возможность добавить новый проект в решение BeanTrader и открыть его в Visual Studio. Проект должен выглядеть правильно в Solution Explorer и dotnet restore BeanTraderClient.Core.csproj должен успешно восстановить пакеты (с двумя ожидаемыми предупреждениями, связанными с MahApps.Metro версией, которая используется для нацеливания на .NET Framework).

Это, вероятно, хороший переломный момент между первой и второй частями этого блог поста. Во втором посте будет рассказано о том, как приложение собирается и работает на .NET Core.

Источник



Posted on 21. April 2019

Начните разработку на Windows 10 May 2019 Update уже сегодня

Windows 10 SDK для May 2019 Update уже доступен с действующей лицензией! Обновление Windows 10 May 2019 Update (сборка 18362) теперь взаимодействует с Release Preview Windows Insider. Она также называется Windows 10, сборка 1903.

Новые API и функции для разработчиков

Каждое Windows 10 обновление выпускается с новыми API, Вы можете ознакомиться с полным списком нововведений для разработчиков на странице Windows Dev Center. Вот некоторые из самых полезных.

1. XAML Islands версия 1: Эта первая версия содержит множество улучшений по сравнению с preview-выпуском в 1809 сборке. Некоторые из основых моментов: устранение проблем незаполненного пространства во всплывающих окнах, XAML содержимое соответствует уровню DPI хоста, Narrator поддерживает работу с XAML содержимым, разрешает islands в нескольких окнах верхнего уровня в одном потоке, поддержка MRT локализации и загрузка ресурсов, ускорители клавиатуры работают в кросс-фреймворках. Windows Community Toolkit версии 6, которая будет выпущенна в июне, будет включать в себя упаковки для WPF и WinForms.

2. Windows Subsystem для Linux: После того, как была выпущена 1903 версия, Вы можете получить доступ к Linux файлам на Windows, а также попробовать более удобные опции командной строки!

  1. Теперь Вы можете использовать wslconfig.exe команды в wsl.exe
  2. В wsl.exe добавилось несколько новых команд:
  • –user,-u : запуск дистрибутив от имени указанного пользователя
  • –import : импорт дистрибутив в WSL из архива
  • –export : экспорт дистрибутив из WSL в архив
  • –terminate, t : завершение работающих дистрибутив
3. Windows UI Library 2.1: WinUI обладает открытым исходным кодом, и каждый из Вас может ознакомиться подробнее с вариантами решения проблем с файлами, поучавствовать в обсуждении новых функций и даже добавлении кода на странице WinUI GitHub репозитория. В WinUI 2.1 были добавлены новые элементы управления, такие как анимированный визуальный плеер, улучшенная панель меню, подсказки и советы по обучению, ретранслятор предметов и многое другое. Также есть функции, в которых было разрешено множество проблем с доступностью, визуальными и функциональными возможностями, о которых сообщали разработчики. Вам обязательно стоит попробовать использовать WinUI в Ваших UWP приложениях - это лучший способ получить новейшие возможности разработки с Fluent дизайном, элементами управления, а также обладать опцией обратной совместимости с Windows 10 Anniversary Update.

Обновите Вашу среду разработки в два простых шага уже сегодня

Во-первых, необходимо обновить Вашу систему до Windows 10 May 2019 Update, с помощью Release Preview Ring. У команды Insider есть отличный блог пост, в котором Вы узнаете, как попасть в Release Preview Ring. Как только Вы это сделаете, просто зайдите в Visual Studio 2017 или 2019 и стяните новый SDK, и все готово. Когда в конце мая сборка 1903 станет общедоступной, SDK станет дефолтным SDK в Visual Studio.

Текущая версия Windows Insider Release Preview для Windows 10, обновление к сборке 1903:
  1. Запустите установщик или перейдите по ссылке https://www.visualstudio.com/downloads/ и загрузите его.
  2. Перейдите в «Индивидуальные компоненты»
  3. Перейдите в раздел «SDK, библиотеки и фреймворки»
  4. Проверьте «Windows 10 SDK (10.0. 18362)»
  5. Нажмите «Установить»

Когда выйдет полный выпуск May 2019 Update:

  1. Запустите установщик Visual Studio или перейдите по ссылке https://www.visualstudio.com/downloads/ и загрузите его.
  2. Выберите «Разработка на универсальной Windows платформе» в разделе «Рабочие нагрузки», и Windows 10 SDK (10.0.18362) будет включен по умолчанию
  3. Нажмите «Установить»

Еще больше полезных советов

Хотите получить инструменты для разработки C ++ или UWP игр? Убедитесь, что Вы уже выбрали один из этих двух:

  • Инструменты C ++ разработки для универсальной Windows платформы в разделе «Рабочая UWP нагрузка»
  • Десктопная разработка с помощью C ++ Workload и Windows SDK 10 (10.0.18362)
  • Если Вы хотите использовать инструменты универсальной Windows платформы, выберите рабочую нагрузку инструментов для Universal Windows Platform

Как только Ваши системы будут обновлены и перекомпилированы, а Ваше приложение протестировано, смело публикуйте его в Dev Center.

Ваше мнение о Windows 10 May 2019 Update

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

Известная проблема c негативным влиянием

Существует известная проблема, которая негативно влияет на следующий сценарий при обновлении или установке Windows 10 версии 1903. Когда модуль управления памятью ввода-вывода (IOMMU) работает на VMware Hypervisor, любой гость на виртуальной машине (ВМ) клиента или сервера, который использует IOMMU может перестать работать. Типичные сценарии использования включают в себя, когда для гостевой виртуальной машины включены защита на основе виртуализации (VBS) и защита учетных данных Windows.

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

Источник




Posted on 28. November 2018

Встраивание ввода данных в UWP приложения

Одной из наименее известных возможностей UWP приложений является встраивание ввода данных. Это будет особенно полезно, если Вы хотите предоставить пользователям ознакомительную инструкцию, мгновенную обратную связь с помощью дополнительных технологий или реализовать вкладку Help в приложении. Рассмотрим подробнее преимущества пространства имен Windows.UI.Input.Preview.Injection и его внедрение в приложения.

Поддерживаемые типы ввода

Windows 10 поддерживает несколько типов ввода. В настоящее время это:

  • Геймпад
  • Клавиатура
  • Мышка
  • Стилус
  • Сенсор

В этой статье будут приведены примеры ввода с помощью клавиатуры и мышки.

Возможность внедрения ввода

Прежде чем использовать внедрение ввода, необходимо указать эту возможность в манифесте приложения, так как это нестандартная функция. Это ограниченная возможность, поэтому Вы можете безопасно отправлять на сертификацию и публиковать Ваше приложение в Store.

Добавление этой возможности простое и понятное. Откройте Package.appxmanifest как XML-файл и добавьте следующее описание пространства имен в Package элемент:

 


 

 

Пространство имен rescap - это хранилище для ограниченных возможностей. Теперь Вы можете добавить функцию inputInjectionBrokered в разделе Capabilities:


  
       
       


Основы

Основным классом в Windows.UI.Input.Preview.Injection является InputInjector. Вы можете создать его образец, вызвав статический TryCreate метод. После чего Вы можете вызвать соответствующие методы для каждого типа ввода:

 

var inputInfo = new InjectedInputMouseInfo();
...
InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { inputInfo });

 

 

Методы принимают список данных ввода, поэтому Вы можете последовательно выполнять несколько операций ввода.

Ввод с мышки

Вы можете подготовить информацию ввода с помощью мышки, используя InjectedInputMouseInfo класс. Чтобы двигать мышкой, используйте DeltaX и DeltaY свойства:

 

var info = new InjectedInputMouseInfo();
info.MouseOptions = InjectedInputMouseOptions.Move;
info.DeltaY = 100; //move down 100 points

 

Свойство MouseOptions позволяет указывать места, которые влияют на выполнение действий. Среди них LeftDown и LeftUp, которые можно использовать для имитации простого щелчка мышки:

 

var down = new InjectedInputMouseInfo();
down.MouseOptions = InjectedInputMouseOptions.LeftDown;

var up = new InjectedInputMouseInfo();
up.MouseOptions = InjectedInputMouseOptions.LeftUp;

InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { down, up });

 

Вы также можете имитировать как вертикальный, так и горизонтальный скрол мышки, используя Wheel и HWheel. Вы можете указывать расстояние прокрутки, используя свойство MouseData:

 

var info = new InjectedInputMouseInfo();
info.MouseOptions = InjectedInputMouseOptions.Wheel;
info.MouseData = 500; //scroll up

InputInjector inputInjector = InputInjector.TryCreate();
inputInjector.InjectMouseInput(new[] { info });

 

Прокрутка - это легко. Но как насчет прокрутки вниз?

 

info.MouseData = -500; //compile time error!

 

Обратите внимание, что свойство MouseData - это uint единица, которой нельзя присвоить отрицательные значения.

 

unchecked
{
    info.MouseData = (uint)-500; //scroll down
}

 

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

Ввод с мышкой также содержит свойство TimeOffsetInMilliseconds, которое можно установить для задержки отдельных действий. Это свойство рекомендуется для правильной имитации операций, таких как двойной щелчок.

Ввод с клавиатуры

Класс InjectedInputKeyboardInfo является базой для внедрения ввода с клавиатуры. Наиболее важное свойство - VirtualKey, которое указывает, к какому ключу относится ввод. Используя KeyOptions, Вы можете указывать дополнительные опции, такие как симуляция key up события.

Следующий образец показывает строку «привет» в активном поле ввода:

 

InputInjector inputInjector = InputInjector.TryCreate();
foreach (var letter in "hello")
{
    var info = new InjectedInputKeyboardInfo();
    info.VirtualKey = (ushort)((VirtualKey)Enum.Parse(typeof(VirtualKey),
                                 letter.ToString(), true));
    inputInjector.InjectKeyboardInput(new[] { info });
    await Task.Delay(100);
}

 

В конце foreach узла находится Task.Delay вызов. Это гарантирует, что повторные нажатия клавиш не регистрируются как одно нажатие.

Образец кода

Исходный образец кода доступен на GitHub.

Application Sample

В заключении

В этой статье мы подробно изучили пространство имен Windows.UI.Input.Preview.Injection и посмотрели, как его можно использовать для имитации ввода с разных типов устройств. Не смотря на то, что эта опция не так часто используется, она все же полезна в UWP API.

Дополнительная нформации



Posted on 26. November 2018

Начало работы с Windows Machine Learning

Благодаря обновлению Windows 10 в октябре 2018 года Windows Machine Learning стало частью AI набора инструментов. Windows ML механизм вывода локально оценивает предварительно обученные модели на Windows устройствах, устраняя проблемы с подключением, пропускной способностью и конфиденциальностью данных. Данные видеоролики помогут Вам понять, как начать работу с Windows ML, и познакомиться с новыми API через призму робота Руфуса.

Обзор Windows Machine Learning

Что такое Windows Machine Learning и чем он может быть полезен? Киллиан и Розан пройдутся по этим вопросам и объяснят определение и возможности этого мощного AI механизма вывода.


Windows Machine Learning: Hello World (Издание MNIST)

Давайте перейдем к коду. Киллиан и Розан работают над учебником по Windows ML MNIST и отвечают на вопросы, которые обычно задают разработчики.


Windows Machine Learning: модели и функции

Киллиан и Розан (с роботом Руфусом) обсуждают загрузку моделей и помогают определить ожидаемые входные и выходные характеристики данной модели.


Windows Machine Learning: выбор устройства

Киллиан и Пол (и робот Руфус) рассказывают, как выбрать устройство для оценки Windows ML модели, а также выясняют значение данной опции по умолчанию.


Windows Machine Learning: сессии и привязки

Киллиан и Пол (и робот Руфус) оценивают модель с Windows ML и рассказывают о важности сессий и привязок.


Предоставление обратной связи

Отправляйте Ваши отзывы о том, с какими темами касательно Windows ML Вы хотите ознакомиться в дальнейшем, написав @killianqueue в Твиттере!


Posted on 6. October 2018

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

Один из часто задаваемых вопросов: «Как привлечь клиентов и увеличить количество оценок и отзывов в приложении?»

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

6 советов, которые Вам помогут:

Просите отзывы

Будьте настойчивыми! Спрашивайте пользователей об их мнение и опыте использования. 

1) Спрашивайте в приложении

Добавьте в Ваше приложение окно оценки и голосования или же напрямую запускайте страницу оценок и отзывов в Microsoft Store. Вы также можете использовать Feedback Hub для отзывов Ваших пользователей.

2) Спрашивайте с помощью push-уведомлений

 

Отправляйте toast- или push-уведомления с просьбой оставить оценку и отзыв. Чтобы привлекать только тех пользователей, которые еще не оценили Ваше приложение, сначала создайте сегмент с определением «Has rated == false», а затем настройте push-уведомления.


 

3) Спрашивайте в Microsoft Store

Добавьте просьбу оставить оценку и отзыв в разделе «Что нового в этой версии» или в описании Вашего продукта в Microsoft Store. После того, как Вы расскажете об обновлениях, сообщите пользователям, что Вы ждете их отзывов. К примеру: «Пожалуйста, помогите улучшить приложение, оставьте Вашу оценку и отзыв».

Отвечайте пользователям

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

4) Отвечайте на отзывы в Store 

Пользователи должны знать, что их мнение важно. Вы можете отвечать на их отзывы через API или с панели инструментов. Подробнее об этом здесь

5) Отвечайте прямо на отзыв

Хотите отправлять конкретные комментарии? Используйте Feedback Hub в Вашем приложении. Вы можете отвечать публично или приватно и уведомлять о состоянии любой жалобы пользователя, над которой Вы работаете.

Ваши ответы должны быть краткие (не больше 1000 символов), вежливые и точные. Подробнее об ответах на отзывы читайте здесь.

Отвечая на отзывы и письма, делайте Ваши ответы вежливыми и уважительными, потому что пользователи имеют право подать жалобу в Microsoft Store на некоректный и оскорбительный ответ.

6) Работайте над улучшениями

Если несколько пользователей предлагают добавить или исправить одну и ту же функцию, рассмотрите эту просьбу для выпуска в новой версии, и когда Вы это сделаете, объявите об этом в описании приложения или в разделе «Что нового в этой версии», чтобы пользователи знали, какие проблемы были устранены. Вы также можете сказать, что проблемы были выявлены на основе отзывов, и попросить пользователей поделиться их мнением.

Эти советы помогут Вам сообщить пользователям о важности их мнения!



Posted on 23. June 2018

Знакомство с WinAppDriver UI Recorder

Новый инструмент WinAppDriver UI Recorder с открытым исходным кодом теперь доступен для Windows Application Driver (WinAppDriver) сообщества. Этот инструмент позволит пользователям легко автомизировать UI тесты.

WinAppDriver - это инструмент для запуска автоматизированных тестов пользовательского интерфейса для любых Windows 10 приложений. Недавно был выпущен предварительный просмотр версии 1.1, с которым Вы можете ознакомиться подробнее здесь.

Что такое UI Recorder

Inspect был наиболее распространенным инструментом в сообществе WinAppDriver, который позволял пользователям выбирать UI элементы и просматривать данные их атрибутов. Не смотря на то, что Inspect выполняет свою целевую задачу по просмотру данных доступности, он все же отстает, когда речь заходит о поддержке сценариев, предназначенных специально для автоматизации пользовательского интерфейса, таких как возможность генерации XPath запросов.

В таких ситуациях инструмент WinAppDriver UI Recorder надеется заполнить имеющиеся пробелы Inspect и послужить его полезной альтернативой.

В первоначальном выпуске, инструмент UI Recorder позволит использовать два ключевых сценария:

1) Проверка UI элементов и извлечение их XPath-выражений

2) Генерация C# кода для определенных действий (щелчок мышью) при активном «Record»

  • Сгенерированный код можно вставить в папку UI Recorder Template для запуска WinAppDriver

Microsoft надеется, что с помощью этого инструмента Вы получите более простой и интуитивно понятный подход при написании сценариев автоматизации для WinAppDriver.

Как начать работу

Открытый исходный код UI Recorder доступен на странице WinAppDriver на GitHub. Для начала сборки и компиляции рекомендуется использовать Visual Studio 2017. После компиляции Вы можете сразу начать начать работу с UI Recorder.

В дополнение к общедоступному коду, Вы также можете скачать zip-архив в разделе GitHub Releases.

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

Инструмент UI Recorder предназначен для интуитивного и упрощенного пользовательского интерфейса, который разделен на две панели, как показано ниже:

UI Recorder отслеживает взаимодействие клавиатуры и мыши с интерфейсом приложения - UI действие. Когда запись активна, верхняя и нижняя панели динамически обновляются с различной информацией UI элементов каждый раз, когда происходит новое UI действие. На верхней панели отображается сгенерированный XPath запрос выбранного UI элемента, а нижняя панель отображает необработанную XML-информацию для одного и того же элемента. Вы можете перейти на C# Code вкладку на нижней панели, чтобы просмотреть сгенерированный C# код записанного действия, который можно использовать в WinAppDriver тесте.

Следующая анимация показывает пример такого процесса:

Записанный код можно копировать в буфер обмена и затем вставлять в проект WinAppDriver UI Recorder шаблона.

Обратная связь

Поскольку UI Recorder является общедоступным инструментом, Microsoft рекомендует всем публиковать любые PR с изменениями или улучшениями и размещать любые предложения по усовершенствованию UI Recorder.

Для обратной связи используйте GitHub Issues Board по вопросам UI Recorder - Microsoft будут рады получить любые предложения, запросы по добавлению новых функций или отчеты об ошибках!

Будьте в курсе событий

Чтобы быть в курсе всех новостей WinAppDriver, следите за страницей @mrhassanuz.

Подвение итогов

Новый инструмент WinAppDriver, инструмент UI Recorder, стал доступным. Для пользователей это удобный способ автоматизации пользовательского интерфейса с помощью WinAppDriver, который может не только генерировать XPath выражения, но также и C# код, записывая UI действия, сделанные с помощью щелчков мыши.



Posted on 18. June 2018

Windows Template Studio 2.2

Microsoft рады объявить о новом выпуске Windows Template Studio, версии 2.2!

Microsoft продолжают работать над следующими обновлениями, в которых будут добавлены новые страницы и небольшие исправления, поскольку Microsoft также работает над добавлением поддержки для нескольких проектов для версии 3.0 и корректирует шаблоны, которые будут поддерживать эту возможность. Это действительно тяжелая работа, но Вы можете быть уверенны, что проект будет улучшаться с каждым обновлением. 

Microsoft будут рады Вашим предложениям. Если Вы заинтересованны в проекте, перейдите на страницу Windows Template Studio на Github.

Что нового:

Вы можете ознакомиться с полным списком улучшений в версии 2.2 на странице Windows Template Studio на Github.

В этой версии:

 

  • Функция 3D-запуска
  • Улучшения Wizard
  • Улучшенная документация
  • Улучшенное тестирование
  • Общее исправление ошибок

 

Обновления на платформе разработчиков: 

 

  • Обновлена Microsoft.NETCore.UniversalWindowsPlatform до 6.15
  • Обновлен Newtonsoft.Json до 11.0.2
  • Обновлены Microsoft.Toolkit.Uwp, Microsoft.Toolkit.Uwp.Notifications и Microsoft.Toolkit.Uwp.UI.Controls до 3.0.0
  • Обновлен Telerik.UI.for.UniversalWindowsPlatform до 1.0.1

 

Как получить обновление:

Есть две возможности обновления к новой сборке.

 

  • Уже установлено: Visual Studio автоматически обновляет расширение. Для принудительного обновления, откройте «Инструменты» --> «Расширения и обновления». Затем перейдите на вкладку слева «Обновление расширителя», там Вы увидите «Windows Template Studio», после чего нажмите «Обновить».
  • Не установлено: Перейдите на https://aka.ms/wtsinstall, нажмите «загрузить» и дважды щелкните по VSIX установщику.

 

Что будет в следующих версиях?

Microsoft ценит Ваше участие и поддержку в сообществе. Кроме того, на данный момент ведется активная работа над возможностями, которые будут добавлены в будущих обновлениях:

  • Шаблон навигации в стиле Menubar
  • Интеграция пакета WinUI Library nuget
  • Улучшения Fluent Design в шаблонах
  • Поддержка нескольких проектов в одном решении
  • Ink шаблоны
  • API активности пользователей для Timeline поддержки
  • Улучшения опции «Right-click->add support for existing projects»

В  партнерстве с сообществом, Microsoft продолжит работу над добавлением и улучшением функций и функциональности. Команда Windows Template Studio всегда рада новым людям, которые готовы помочь, и если Вам интересно, пожалуйста, перейдите на GitHub --> https://aka.ms/wts. Если у Вас есть идеи по добавлению новых функций, пожалуйста, отправьте Ваш запрос!



Posted on 5. June 2018

Windows Community Toolkit v3.0

Windows Community Toolkit v3.0

 

Microsoft рады объявить о самом большом обновление Windows Community Toolkit - версии 3.0.

Несколько недель назад Microsoft объявили об изменении названия инструментария сообщества для того, чтобы еще больше Windows разработчиков присоеденились к сообществу, и уже в этом блог посте, Вы сможете изучить функции самого большого обновления Windows Community Toolkit:

  • Новый пакет для всех WPF и WinForms разработчиков, который включает в себя новый Edge WebView
  • Новый пакет для всех XAML UWP разработчиков с технологией отслеживания глаз по API в XAML
  • Новый пакет для всех .NET UWP разработчиков, который поможет с написанием Runtime API Проверок
  • Новый пакет с элементами управления для доступа к Microsoft Graph
  • Новые элементы управления и API в существующих пакетах
  • Fluent Design в уже существующих элементах управления с поддержкой светлой и темной темы
  • Обновленная документация и примеры кода в Visual Basic
  • Дополнительные улучшения и исправления ошибок

Давайте рассмотрим некоторые из этих обновлений более подробно.

Новый и современный WebView для .NET и WPF приложений

Microsoft добавили новый инструмент Microsoft Edge рендеринга для .NET WinForms и WPF приложений. Тем не менее, работа с WebViewControl и WebView API может быть неизвестна .NET разработчикам, поэтому Microsoft создали дополнительные элементы управления, чтобы упростить опыт работы и предоставить более привычную среду разработки.  Эти элементы управления обертывают WebViewControl, чтобы сделать элемент управления больше похожим на .NET WinForms или элемент WPF управления, а также предоставить подмножество членов этого класса.

На сегодняшний день WinForms и WPF элементы управления доступны в Microsoft.Toolkit.Win32.UI.Controls пакете. Это означает, что переход с Trident-powered WebBrowser на EdgeHTML-powered WebView в Вашем WinForms или WPF приложение может быть таким же простым, как перетаскивание нового элемента управления из панели инструментов.

Прочтите эти документы и ознакомтесь с полной документацией.

Новая Gaze Interaction Library с интеграцией отслеживания глаз в XAML приложениях

Gaze input - это мощный инструмент с технологией отслеживания глаз и использования Windows и UWP приложений, эта технологния особенно полезна для пользователей с нейро-мышечными заболеваниями (такими как БАС) и другими нарушениями, связанными с атрофией мышц или центральной нервной системы. Обновление Windows 10 April 2018 Update теперь поддерживает Windows технологию отслеживания глаз по API. Чтобы разработчики использовали эти API в своих XAML приложениях, Microsoft добавили Gaze Interaction Library в пакет Microsoft.Toolkit.Uwp.Input.GazeInteraction. Например, для того чтобы включить технологию отслеживания глаз на Вашей xaml странице, добавьте следующее свойство:

 

xmlns:gaze="using:Microsoft.Toolkit.Uwp.Input.GazeInteraction"
        gaze:GazeInput.Interaction="Enabled"

 

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

Platform Specific Analyzer

При написании адаптивного кода платформы разработчики должны убедиться, что код проверяет наличие API перед его вызовом. Специфичный анализатор платформы, доступный в Microsoft.Toolkit.Uwp.PlatformSpecificAnalyzer nuget пакете, представляет собой Roslyn анализатор для C# и Visual Basic, который может обнаруживать, когда Вы используете API, которые теперь стали доступны для всех Windows 10 версий и помогут Вам добавить соответствующие проверки кода.

Просто добавьте nuget пакет в Ваше приложение, и анализатор автоматически проверит Ваш код в процессе разработки.

Элементы управления Microsoft Graph

В новом Microsoft.Toolkit.Uwp.UI.Controls.Graph пакете Microsoft добавили четыре новых элемента управления, чтобы предоставить разработчикам доступ к Microsoft Graph в их XAML приложениях.

ProfileCard и AadLogin

Элемент управления ProfileCard - это простой способ отображения пользователя в нескольких разных форматах с использованием комбинации имени, изображения и электронной почты. Элемент управления AadLogin использует службу Microsoft Graph для включения процесса входа в Azure Active Directory (AAD) систему.

PeoplePicker

Элемент управления People Picker позволяет выбирать одного или нескольких пользователей из организационного AD.

SharePointFileList

Элемент управления SharePointFileList позволяет пользователю перемещаться по папке и файлам и отображает простой список SharePoint файлов.

Новые элементы управления и помощники

В дополнение к новым пакетам, в инструментарий также были добавлены новые элементы управления и помощники для уже существующих пакетов, о которых стоит упомянуть.

CameraHelper и CameraPreview

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

Элемент управления CameraPreview XAML использует CameraHelper для удобного просмотра видеофрагментов в Ваших приложениях.

В xaml:

 

 

 

В С#:

 

await CameraPreviewControl.StartAsync(); 
CameraPreviewControl.CameraHelper.FrameArrived += CameraPreviewControl_FrameArrived;

 

 

Прочтите эти документы и ознакомтесь с полной документацией.

UniformGrid

Элемент управления UniformGrid - это гибкий элемент управления макетами, который упорядочивает элементы в равномерно распределенном наборе строк или столбцов, чтобы заполнить общее доступное пространство дисплея. Каждая ячейка в сетке будет одинакового размера по умолчанию. Если Вы перемещаете UniformGrid XAML из WPF, просто добавьте префикс пространства имен в инструментарий.

      
   
      
      
      
      
      
      
      
       
    

Прочтите эти документы и ознакомтесь с полной документацией.

InfiniteCanvas

Элемент управления InfiniteCanvas представляет собой новый canvas, который поддерживает бесконечную прокрутку, inking, форматирование текста, масштабирование, отмену и повтор, а также экспорт и импорт canvas данных.

Прочтите эти документы и ознакомтесь с полной документацией.

И еще...

Обязательно просмотрите информацию о выпуске, чтобы изучить полный список обновлений в этой версии. Сообщество Windows Community Toolkit продолжает работать над улучшениями, чтобы предоставить лучшие функции для всех Windows разработчиков, и, на данный момент, версия 3.0 - это самое большое обновление. Новый инструментарий был бы невозможен без Вашего участия и вклада в проект.

Напоминаем, что Вы можете начать работу, следуя этому руководству, или изучить новые  функции, установив UWP Community Toolkit Sample App приложение из Microsoft Store. Если Вы хотите внести Ваш вклад, присоединяйтесь к Windows Community Toolkit на GitHub! Чтобы присоединиться к беседе в Twitter, используйте хэштег #windowstoolkit.

Источник



Posted on 28. May 2018

Технология отслеживания глаз по API

Создание приложений и захватывающих игр совместимых с технологией отслеживания глаз по API

В прошлом году, вместе с обновлением Windows 10 Fall Creators Update, Microsoft представили функцию Eye Control, которая позволяет пользователям управлять Windows устройствами с помощью глаз. Microsoft продолжает разрабатывать еще больше функций для людей с ограниченными возможностями, таких как Стив Глисон, чтобы предоставить им перемены в лучшую сторону. Однако команда Microsoft понимает, что выполнение миссии - «предоставить возможности каждому человеку и организации на планете достичь большего» - выходит за рамки одного продукта. Все начинается с чего-то более фундаментального: создание платформы, позволяющей всем разработчикам создавать продукты, которые помогут улучшить жизнь людей и оказать положительное влияние.

В этом блог посте, Microsoft рады представить Вам следующий шаг в улучшениях возможностей по отслеживанию глаз. В дополнение к улучшению функции шаринга с помощью Eye Control и расширенной аппаратной поддержки Eye Tracker, Microsoft представляет Вашему вниманию Windows API с функцией отслеживания глаз и открытый исходный код, который позволяет всем разработчикам приложений создавать более доступные и захватывающие приложения, которые можно использовать с помощью отслеживания глаз.

Давайте изучим все детали.

Новые функции в Eye Control

С момента выпуска функции Eye Control, команда Microsoft продолжала работать с Microsoft Research и людьми, с заболеванием БАС (боковой амиотрофический склероз) или ЗДН (заболевание двигательных нейронов). Microsoft тщательно изучили отзывы людей с заболеванием БАС, а также пользователей, которые хотят управлять Windows устройствами с помощью глаз. Эти отзывы значительно повлияли на выбор набора функций, которые были недавно добавлены в Eye Control, и которые сделали еще один шаг на пути к полному управлению компьютеров с помощью оптической оси глазного яблока. Вот три области, которые были улучшены на основе отзывов и сотрудничества с людьми с ограниченными возможностями:
  • Более легкая навигация: Microsoft добавили больше возможностей управления мышью, например, скроллинга любого приложения или веб-сайта, а также ускоренный клик по контенту. 
  • Ускоренное перемещение: Более быстрый доступ к меню Start, Task View, калибровке устройства и настройкам Eye Control, которые теперь доступны с панели управления Eye Control.
  • Возможность поставить на паузу в любой момент: Приостановка панели управления при просмотре фильма, чтении или просто перерыве во избежания случайных взаимодействий с глазами.

Панель управления Eye Control в Обновлении Windows 10 April 2018 Update

Функция Eye Control еще находится в режиме предварительного просмотра, и Ваши отзывы помогут сделать ее намного лучше. Если у Вас есть какие-либо пожелания по улучшению продуктов и услуг, Вы можете оставить их на форуме Accessibility User Voice Forum или Windows Feedback Hub. Если у Вас возникли трудности с использованием Eye Control, свяжитесь с Disability Answer Desk.

Расширенная поддержка аппаратуры для отслеживания глаз

В прошлом году, команда Microsoft объявила о сотрудничестве с компанией Tobii для расширения количества аппаратных средств и игровых трекеров под управлением Windows, которые будут поддерживать отслеживание глаз. В этом году, Microsoft представили своего второго партнера - компанию EyeTech.

Главная цель - поддерживать максимальное количество оборудования для отслеживания глаз на Windows платформе, чтобы позволить клиентам выбирать устройство, которое лучше всего подходит для их потребностей и предпочтений. Все эти устройства отслеживания глаз будут работать с Eye Control и Windows API по отслеживанию глаз, чтобы разработчики могли создавать приложения, которые в будущем будут работать на всех поддерживаемых устройствах. Microsoft продолжает работать над аппаратной экосистемой и надеется, что в этом году у них появится больше партнеров.

Новые Windows технологии отслеживания глаз по API

В дополнение к улучшениям Eye Control и более широкой аппаратной поддержке отслеживания глаз, Microsoft рады представить новые Windows инструменты для всех разработчиков, с помощью которых они смогут стать частью команды по работе с технологиями отслеживания глаз.

Обновление Windows 10 April 2018 Update включает в себя Windows API отслеживания глаз - такой же набор API, который был использован для создания Eye Control. Эти API предоставляют поток данных отслеживания глаз, который указывает, куда именно смотрит пользователь в окне приложения. Microsoft также выпустили Gaze Interaction Library с открытым исходным кодом в Windows Community Toolkit, чтобы упростить интеграцию взаимодействий взгляда в Ваших UWP приложениях. Microsoft начинает сотрудничать с такими компаниями, как Tobii и EyeTech, чтобы работать над улучшениями этой библиотеки с открытым исходным кодом, и если у Вас есть какие-либо рекоммендации, сделайте Ваш вклад в сообществе разработчиков, ориентированных на возможности отслеживания глаз.

Команда Microsoft уже видит результаты того, как их партнеры используют Windows API и делают приложения с технологией отслеживания глаз общедоступными. Одним из лучших примеров является Snap + Core First by Tobii Dynavox, коммуникационное приложение на основе символов, которое помогает людям легко общаться друг с другом. Microsoft также видит, что взаимодействие с отслеживанием глаз создает более захватывающий игровой опыт. И при поддержке UWP интеграции с Unity, Вы можете использовать эти API в Вашей новой или уже существующей UWP Unity игре.

С выпуском этих API, Microsoft гарантирует надежную защиту конфиденциальности всех пользователей. В первый раз, когда приложение должно получить доступ к трекеру движения глаз, оно запрашивает разрешение. Кроме того, приложение может получить доступ ко всем данным отслеживания глаз, которые хранятся в приложении. Обратите внимание, что если Ваше приложение собирает, сохраняет или передает данные отслеживания глаз, Вы должны описать это в заявлении о конфиденциальности Вашего приложения. Вы можете узнать больше о том, как мы управляем Вашей конфиденциальностью на странице конфиденциальности технологии отслеживания глаз.

Начните разрабатывать!

Microsoft с нетерпением ожидает сотрудничества с разработчиками, чтобы предоставить каждому пользователю богатую экосистему приложений и наилучший опыт отслеживания глаз, и они будут рады видеть Ваши проекты. Здесь Вы можете ознакомиться с ресурсами, которые помогут начать работу:

Документация
API Ссылки / Код
Новые API технологии по отслеживанию глаз, оборудывание, Eye Control, опыт работы с приложениями также были представлены на ежегодной бизнес-конференции Build. Если Вы хотите узнать больше, пожалуйста, посетите www.microsoft.com/accessibility.