Posted on 12. March 2019

Как переносить настольные приложения на .NET Core 3.0

В этой статье будет рассмотрен перенос настольного приложения с .NET Framework на .NET Core. В качестве примера возьмем WinForms приложение. Шаги для WPF приложения схожи, различия рассмотрим по ходу. Также увидим как использовать WinForms designer в Visual Studio, хотя он находится в стадии разработки и еще не доступен для .NET Core проектов.

О примере

Для этого поста будет использовано игровое Memory-style board приложение. Оно состоит из WinForms UI (MatchingGame.exe) и библиотеки классов с игровой логикой (MatchingGame.Logic.dll), которые предназначены для .NET Framework 4.5. Здесь можно скачать образец. Итак, рассмотрим перенос проекта приложения на .NET Core 3.0, а также библиотеки классов на .NET Standard 2.0. Использование .NET Standard вместо .NET Core позволяет повторно использовать игровую логику для размещения приложения на других платформах, таких как iOS, Android или в вебе.

 

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

Пошаговый процесс

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

Прежде чем переносить приложение на .NET Core 3.0, подготовите следующее:

  1. Установите .NET Core 3 и Visual Studio 2019 Preview версию (Visual Studio 2017 поддерживает версии только до .NET Core 2.2).
  2. Начните с рабочего проекта. Убедитесь, что проект беспроблемно открывается, собирается и запускается.
  3. Обновите NuGet пакеты. Всегда рекомендуется использовать последние версии NuGet пакетов перед любым переносом. Если Ваше приложение ссылается на какие-либо NuGet пакеты, обновите их до последней версии. Убедитесь, что Ваше приложение успешно собрано. Если NuGet выдает ошибки, понизьте версию и найдите последнюю, которая не нарушает Ваш код.
  4. Запустите .NET Portability Analyzer, чтобы определить, существуют ли какие-либо API, от которых зависит Ваше приложение, и которые отсутствуют в .NET Core. Если таковые имеются, Вам необходимо провести рефакторинг своего кода, чтобы избежать зависимостей от API, не поддерживаемых в .NET Core. Иногда можно найти альтернативный API, который обеспечивает необходимую функциональность.
  5. Замените packages.config на PackageReference. Если используются NuGet пакеты, то нужно добавить те же NuGet пакеты в новый .NET Core проект. .NET Core проекты поддерживают только PackageReference для добавления NuGet пакетов. Чтобы переместить ссылки NuGet из packages.config в файл проекта, в обозревателе решений необходимо щелкнуть правой кнопкой на packages.config -> Migrate packages.config в PackageReference… Более детально об этом типе переноса можно ознакомиться по ссылке Migrate from packages.config to PackageReference.

 

Портирование основного проекта

Создание нового проекта
  • Создайте новое приложение того же типа (Console, WinForms, WPF, Class Library), что и приложение, которое нужно перенести, для .NET Core 3. На данный момент были сделаны демонстрационные Visual Studio шаблоны для десктопных проектов, которые находились в стадии разработки, поэтому использовалась консоль.
dotnet new winforms -o \MatchingGame.Core\
  • Скопируйте в файле проекта все внешние ссылки из старого проекта, например:
  • Начните сборку. На этом этапе, если пакеты, на которые Вы ссылаетесь, поддерживают только .NET Framework, Вы получите NuGet предупреждение. Если Вы не обновились к последней версии NuGet пакета на шаге 3, попробуйте определить, доступна ли последняя версия, поддерживающая .NET Core (.NET Standard), и повторите обновление. Если более новой версии нет, то .NET Framework пакеты все еще можно использовать, но можно получить ошибки времени выполнения, если эти пакеты имеют зависимости от API, не поддерживаемых в .NET Core. В таком случае рекомендуется сообщить автору NuGet пакета, что Вас заинтересовало бы обновление пакета до .NET Standard. Сделать это можно через контактную форму в NuGet галерее.
Быстрый способ (заменить существующий файл проекта)

Итак, быстрый способ переноса. Убедитесь, что у Вас есть копия текущего .csproj файла, возможно, Вам придется использовать его в будущем. Замените текущий .csproj файл .csproj файлом из проекта, созданного ранее, и добавьте вверху следующее:

false
Соберите приложение. Если ошибок не возникло, то перенос проекта на .NET Core 3 прошел успешно. Для перемещения зависимого (UI) проекта рекомендуется ознакомиться с разделом «Перенос пользовательского интерфейса»), чтобы узнать, как использовать Designer, ознакомьтесь с разделом «Использование WinForms Designer для проектов .NET Core».

Медленный путь (управляемый перенос)

Если система выдает ошибки, то нужно внести дополнительные корректировки. Здесь предоставлена информация о внесении изменений в код с возможными исправлениями для каждого вопроса. Шаги ниже также помогут лучше понять процесс переноса, поэтому, если быстрый способ помог, но Вам интересно узнать «почему и как», продолжайте читать.
  • Перейдите в.csproj файл в SDK-style. Чтобы переместить приложение в .NET Core, сначала нужно изменить файл проекта в SDK формате, поскольку старый формат не поддерживает .NET Core. Кроме того, SDK-style формат намного проще и с ним легче работать. Убедитесь, что копия текущего .csproj файла создана. Замените содержимое .csproj файла следующим. Для WinForms приложения:
  

  
    WinExe
    net472
    true
    false
  
Для WPF приложения:

  
    
  
    WinExe
    net472
    true
    false
  
Обратите внимание, что значение было установлено как false. В проектах нового стиля AssemblyInfo.cs генерируется автоматически по умолчанию. Так что, если проект уже содержит файл AssemblyInfo.cs файл (а он содержит), то необходимо отключить авто-генерацию или удалить файл.

Теперь скопируйте и вставьте все ссылки из старой версии .csproj файла в новую. Например:

Ссылка на NuGet пакет
 

Ссылка на проект
 


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

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




  • Перейдите от .NET Framework к .NET Standard или .NET Core. После успешного преобразования библиотеки в SDK формат, ее можно перенастроить. В данном случае, необходимо, чтобы библиотека классов предназначалась для .NET Standard вместо .NET Core. Таким образом, она будет доступна из любой .NET реализации, если нужно отправить игру на другие платформы (например, iOS, Android или Web Assembly). Для этого замените данную строку
net472
на следующую

netstandard2.0
Создайте Ваше приложение. Если Вы используете API, которые не включены в .NET Standard, то могут возникнуть ошибки. Если ошибок нет, то следующие два шага можно пропустить.

  • Добавьте Windows Compatibility Pack для совместимости, если необходимо.Некоторые API, которые не включены в .NET Standard, доступны в Windows пакете совместимости. Если на предыдущем шаге были получены ошибки, то можно проверить, поможет ли Windows пакет совместимости. В рассматриваемом приложении была получена следующая ошибка «Имя реестра не существует в текущем контексте», поэтому в проект был добавлен Microsoft.Windows.Compatibility NuGet пакет. После установки ошибка исчезла.
  • Установите API Analyzer. API Analyzer, доступный в виде NuGet пакета Microsoft.DotNet.Analyzers.Compatibility, предупредит об использовании устаревших API или API, которые не поддерживаются на всех платформах (Windows, Linux, macOS). Если был добавлен пакет совместимости, то рекомендуется добавить и API Analyzer для отслеживания случаев использования API, которые не будут работать на всех платформах. На этом рассмотрение процесса переноса библиотеки классов на .NET Standard заканчивается. Если у Вас есть несколько проектов, которые ссылаются друг на друга, переносите их «снизу вверх», начиная с проекта, который не зависит от других. В данном примере также есть WinForms MatchingGame.exe проект, поэтому теперь необходимо выполнить аналогичные шаги для его переноса в .NET Core.
Перенос пользовательского интерфейса
  • Добавьте .NET Core UI проект. Внедрите в решение новый .NET Core 3.0 UI проект. На данный момент Visual Studio шаблоны для настольных приложений находятся в стадии разработки, поэтому можно просто использовать dotnet CLI.
dotnet new winforms -o \MatchingGame.Core\
Для WPF проектов можно использовать следующее:

dotnet new wpf -o \MatchingGame.Core\
После того, как был создан новый WinForms .NET Core проект, его необходимо добавить в Ваше решение.
  • Свяжите проекты. Сначала удалите все файлы из нового проекта (прямо сейчас он содержит общий Hello World код). Затем свяжите все файлы из существующего .NET Framework UI проекта с .NET Core 3.0 UI проектом, добавив в .csprojfile файл следующую команду.
    

    
    

Если у Вас WPF приложение, также необходимо включить .xaml файлы:

  

  
    MSBuild:Compile





  
    MSBuild:Compile
  
  

  • Совместите пространство имен по умолчанию и имя сборки. Поскольку Вы ссылаетесь на файлы, созданные дизайнером (например, Resources.Designer.cs), то нужно убедиться, что версия Вашего .NET Core приложения использует то же пространство имен и то же имя сборки. Скопируйте следующие параметры из Вашего .NET Framework проекта:

    
    

  • Отключите AssemblyInfo.cs файл. Как было отмечено ранее, в проектах нового стиля AssemblyInfo.cs генерируется автоматически по умолчанию. В то же время AssemblyInfo.cs файл из старого WinForms проекта будет скопирован и в новый проект, так как все ** \ *.cs файлы были связаны на предыдущем шаге. Это приведет к дублированию AssemblyInfo.cs. Чтобы избежать этого в файле MatchingGame.Core проекта, для GenerateAssemblyInfo было установлено значение false.
false
  • Запустите новый проект. Установите новый .NET Core проект в качестве StartUp проекта и запустите его. Убедитесь, что все работает.
  • Скопируйте или оставьте ссылку. Теперь вместо связывания файлов можно скопировать их из старого .NET Framework UI проекта в новый .NET Core 3.0 UI проект. После этого предыдущий можно удалить.
Использование WinForms Designer для проектов .NET Core

Как было упомянуто выше, WinForms Designer для .NET Core проектов еще не доступен в Visual Studio. Однако есть два способа обойти данный вопрос: 

  1. Сохраните файлы связанными (просто не выполните предыдущий шаг) и скопируйте их, когда будет доступна designer поддержка. Таким образом, можно изменить файлы в старом .NET Framework WinForms проекте, используя designer. И изменения будут автоматически отражены в новом .NET Core WinForms проекте, поскольку они связаны между собой.
  2. Храните два файла проекта в той же директории, где и WinForms проект: старый .csproj файл из существующего .NET Framework проекта и новый .csproj файл в SDK-style нового .NET Core WinForms проекта. Нужно выгрузить и перезапустить проект с соответствующим файлом проекта в зависимости от того, хотите ли Вы использовать designer или нет.
Подведение итогов

В этой статье было показано, как перенести десктопное приложение, содержащее несколько проектов, из .NET Framework на NET Core. Обычно недостаточно просто перенастроить свои проекты на .NET Core. Также были описаны потенциальные проблемы, с которыми Вы можете столкнуться, и способы их решения. Кроме того, было рассмотрено, как можно использовать WinForms designer для портированных приложений, пока он еще не доступен для .NET Core проектов.



Posted on 2. February 2019

Windows Template Studio - Версия 3.0!

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

Ваши отзывы и пожаления очень важны для сообщества. Если Вы заинтересованы, пожалуйста, перейдите на страницу WTS на Github.

Что нового:

Полный список изменений в версии 3.0 Вы можете просмотреть на странице WTS на Github.

Включено в эту версию:

  • Код теперь генерируется как многопроектное решение. Это позволит лучше повторно использовать и разделять логику кода. В результате это будут UWP и .NET Core проекты.
  • Добавление новых проектов по щелчку правой кнопкой мыши.
  • Горизонтальная навигация просмотра заменена шаблоном навигации Pivot.
  • Обновление MVVMLight для использования библиотеки .NET Standard.
  • Общие исправления ошибок.

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

  • AdaptiveCards к версии 1.1.2
  • AppCenter.Analytics к версии 1.12.0
  • AppCenter.Crashes к версии 1.12.0
  • Services.Store.Engagement к версии 10.1810.16002
  • UI.Xaml to v2.0.181018003.1
  • Json к версии 12.0.1
  • UI.for.UniversalWindowsPlatform к версии 1.0.1.3
Известная проблема
  • В предварительном просмотре Visual Studio 2019 с поддержкой для нескольких проектов произошел сбой NuGet ссылки для Core проекта. (#2862). Чтобы обойти эту проблему, Вам нужно добавить ссылку вручную. Единственная важная ссылка - это Newtonsoft.Json в Core.
  • Форма отправки обратной связи была удалена, пока ошибка не будет исправлена в SDK (#2879).
Как получить обновление:

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

Microsoft ценит Ваше участие и поддержку в сообществе. Кроме того, на данный момент ведется активная работа над новыми функциями, которые будут добавлены в будущих обновлениях. Вот некоторые из них:
  • Шаблон навигации в стиле Menubar (версия 3.1)
  • Идентификационный логин (версия 3.1)
  • Улучшения поддержки для Visual Studio 2019
  • Добавление Azure функций (версия 3.1 и выше)
  • Группа тестовых проектов
В партнерстве с сообществом, Microsoft продолжит работу над добавлением и улучшением функций и функциональности. Команда Windows Template Studio всегда рада Вашим отзывам, и если Вам интересно, пожалуйста, перейдите на GitHub --> https://aka.ms/wts. Если у Вас есть идеи по добавлению новых функций, пожалуйста, отправьте Ваш запрос!



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 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 26. April 2018

Windows Template Studio 2.0

Windows Template Studio обновлен к новой версии 2.0. Команда Microsoft с нетерпением ждет, когда Вы начнете создавать замечательные приложения, используя новую версию. Template Studio - это проект с открытым исходным кодом, главная цель которого - ускорить создание приложений с использованием передовых методов и надежной исходной базой кода.

Microsoft благодарны всем за участие в проекте, основанном на сообществах, огромным вкладам / партнерским отношениям, которые были осуществлены в течение прошедшего года с начала выпуска проекта.

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

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

Уже установлено: Visual Studio автоматически обновляет расширение. Для принудительного обновления, откройте «Инструменты» -> «Расширения и обновления». Затем перейдите на вкладку слева «Обновление расширителя», и Вы увидите Windows Template Studio, после чего нажмите «Обновить».

Не установлено: Перейдите на https://aka.ms/wtsinstall, нажмите «загрузить» и дважды щелкните по VSIX установщику.

Что нового?

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

К тому же, после того, как будет выпущено следующее Windows 10 обновление, будет добавлен навигационный контроль (NavigationView) для платформы UWP Community Toolkit с потрясающим гамбургер меню контролем, который обеспечит удобный переход между классической и контрольной платформами. На данный момент Microsoft работает над документацией, чтобы упростить переход между существующим контролем и новой платформой.

Документация 

Microsoft активно улучшает документацию. В будущем большинство документаций будут перенесены на docs.microsoft.com, которые охватят шаблоны и будут использовать актуальный wizard. Документация, которая останется на WTS GitHub, будет относиться к документации по модификации движка или созданию шаблонов для использования wizard. 

Будущее развитие, обновление и взаимодействие с сообществом

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

Анонс в блоге команды Майкрософт


Posted on 8. March 2018

AI платформа для Windows разработчиков

AI платформа для Windows разработчиков

Компания Microsoft делает огромные инвестиции в AI и Machine Learning. Возможности AI в Office 365 помогают подписчикам с высокой продуктивностью работы; удобные функции приложения Photos для Windows 10 значительно упрощают создание видеороликов и поиск по обширным фото коллекциям, а функция Windows Hello использует AI для распознавания лиц и быстрого входа в систему Ваших Windows устройств. Microsoft также использует AI для ответа на Ваши вопросы об использовании Bing Search и Cortana, чтобы позволить рекламодателям закрепить более прочные связи с клиентами и помогать специалистам по безопасности защищать бизнес от современных угроз. Microsoft Research продолжает работу над современной возможностью распознавания речи, аппаратурой для автоматического считывания и распознавания речи, и машинного зрения. Microsoft уже масштабировали AI до меньших устройств и даже создали AI, с которым можно рисовать!

«Технология Intel Movidius VPU предоставит более утонченный AI для сотен миллионов пользователей Microsoft по всему миру», - сообщает Реми Эль-Уазане - вице-президент Intel и генеральный директор Movidius.

Начиная со следующего крупного Windows 10 обновления, команда Microsoft будет улучшать преимущества, которые были добавлены в их приложения и сервисы как составные части Windows 10 платформы. Каждый разработчик, который собирает Windows 10 приложения, сможет использовать AI для внедрения более мощных и интересных опций.

«Ускорение AI на Windows 10 ПК является новейшим доказательством того, как искусственный интеллект становится повсеместным в нашей повседневной жизни», - сказал Ян Бак, вице-президент и генеральный менеджер Accelerated Computing в NVIDIA. «NVIDIA рада сотрудничать с Microsoft, чтобы улучшить работу на ПК для пользователей по всему миру». 

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

  • Низкая латентность, результаты в режиме реального времени. Windows может выполнять задачи по оценке AI, используя локальные возможности обработки ПК, что позволяет анализировать многочисленные локальные данные, такие как изображения и видео, в режиме реального времени. Результаты могут быть доставлены быстро и эффективно в целях выполнения интенсивных объемов работы, таких как игровые движки, или фоновые задачи, такие как индексирование для поиска.
  • Снижение оперативных расходов. Используя Microsoft Cloud AI платформу, разработчики могут создавать доступные по цене комплексные AI решения, сочетающие учебные модели в Azure с возможностью развертывания для оценки на Windows устройствах. Значительная экономия может быть достигнута за счет сокращения или устранения затрат, связанных с пропускной способностью, из-за приема маштабных наборов данных, таких как снимки камеры или телеметрии датчиков. Сложные рабочие нагрузки могут обрабатываться в режиме реального времени, при этом данные минимальной выборки будут отправленны в облако для улучшения обучения по вопросам наблюдения.
  • Гибкость. Разработчики могут выбирать между выполнением AI задач на устройстве или на облаке на основе потребностей своих клиентов и сценариев. AI обработка может проводится на отключенных от сети устройствах, или в сценариях, где данные не смогут отправиться в облако из-за расходов, размера, политики или предпочтений клиентов.

«Мы рады сотрудничать с Microsoft на платформе Windows ML и помогать разработчикам ускорить AI работу на Windows ноутбуках с помощью процессора Snapdragon 835 AI Engine». Гэри Бротман, директор по управлению производством - AI и Machine Learning, Qualcomm Technologies, Inc.

Оценка от Microsoft для модели ML настроена на эффективность в различных кремниях, работающих под управлением Windows. Используя оптимизацию наборов инструкций на современных процессорах, аппаратное ускорение на графических процессорах, поддерживающих DirectX 12, и модель драйвера для целевых AI процессоров в будущем, Microsoft обеспечивает производительность и эффективность в широком диапазоне форм-факторов. Начиная с этого обновления, разработчики могут использовать AI платформу в семействе Windows устройств, в том числе и периферийные IoT устройства, HoloLens, 2-в-1 и настольные ПК, рабочие станции, серверы и центры обработки данных.

«Мы рады сотрудничать с Microsoft в Windows ML и использовать высокопроизводительные возможности AMD процессоров и графических процессоров для ускорения AI на Windows 10 ПК». - Андре Здравкович, CVP Software, AMD.

Windows поддерживает ONNX, промышленный стандартный формат для ML моделей, который находится под управлением Microsoft, Facebook и Amazon Web Services и поддерживается на Windows IHV, а также NVIDIA, Intel, Qualcomm и AMD. Специалисты по обработке данных могут обучать и поставлять ONNX модели для Windows разработчиков, которые используют Azure Machine Learning Workbench, и в ближайшее время, Azure Custom Vision Service также будет поддерживать создание ONNX моделей для Windows.

Microsoft также инвестировали средства в создание отличного опыта разработки для AI разработчиков на Windows платформе. Начиная с обновления Visual Studio Preview 15.7, добавление ONNX файла в UWP проект будет автоматически создавать модельные интерфейсы в Вашем проекте. В предыдущих версиях Visual Studio разработчики могут использовать инструмент MLGen для создания интерфейса кода, а затем вручную добавлять его в свои проекты. Эта возможность также будет скоро добавлена для инструментов Visual Studio для AI.

И это только начало! С каждым выпуском, Вы будете получать еще больше продуктивности на Windows устройствах. Разработчики смогут собирать приложения на базе AI, что поможет Вам вдохновлять и обмениваться информацией в 3d, легче отслеживать задачи и загруженность, и даже слушать музыку из плейлистов, сделанных специально для Вас.

Вы можете узнать больше об AI новшествах в //build 2018.


Posted on 25. January 2018

Windows Desktop Program для Desktop Application Analytics

Важной функцией для разработчиков настольных приложений является возможность просмотра подробной аналитики о производительности приложения и его популярности среди пользователей. До этого момента у  разработчиков не было возможности доступа к этим аналитикам, не объединяя несколько инструментов. Благодаря Windows Desktop Program у разработчиков появился новый удобный, универсальный портал для просмотра аналитики на рабочем столе или через API данные. Статистика и графики быстро показывают, как работают приложения - от количества пользователей до подробных данных о производительности при сбоях и ошибках. Благодаря этой аналитике разработчики могут лучше отслеживать и устанавливать приоритеты исправлений, контролировать распространение своего приложения, готовить и улучшать общий функционал для своих клиентов.

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

После регистрации в программе Windows Desktop Application Program и регистрации Ваших сертификатов, Вы сможете использовать аналитические отчеты для:

  • Просмотра общей суммы всех типов сбоев, отсортированных по количеству падений
  • Изучения каждого сбоя, загрузки трассировки стека и CAB файлов для быстрой отладки проблемы
  • Сравнения состояния работоспособности и принятие недавно выпущенной версии Вашего приложения к предыдущим выпускам
  • Просмотра данных о работоспособности в целом или по регионам, что позволит устранять проблемы, характерные для региона
  • Сравнения производительности и принятие настольных приложений разными Windows версиями, такими как последние версии Windows 10 или Windows Insider.

 

Для просмотра аналитики Ваших приложений:
  1. Зарегистрируйтесь в приложении Windows Desktop Application Program. Если у Вас уже есть учетная запись в Windows Dev Center, Вы можете открыть эту программу на странице «Программы» в настройках Учетной записи. В противном случае Вы можете зарегистрироваться здесь.
  2. Следуйте инструкциям по загрузке неподписанного файла, привяжите его к тому же сертификату подписи кода, который использует Ваша компания для подписания настольных приложений, и затем загрузите вновь подписанный файл через портал.
  3. Вуаля! Microsoft возьмет подписанный файл, который Вы только что загрузили, и сопоставит его с телеметрией, которая собирается во всех приложениях с тем же сертификатом, чтобы показать Вам данные Вашей аналитики. Чтобы узнать больше, ознакомьтесь с данной документацией.

Чтобы узнать больше о программе Windows Desktop Application Program, ознакомьтесь с одним из видео выпусков Microsoft Windows Developer.



Posted on 30. October 2017

Windows Application Driver больше не в бета-версии!

Windows Application Driver больше не в бета-версии!

Microsoft опубликовали выпуск Windows Application Driver (WinAppDriver) версии 1.0. Этот выпуск является первой не бета-версией WinAppDriver. Это один из важных этапов в проекте, который был впервые представлен в Build 2016.

Что предоставляет WinAppDriver

Теперь стало намного легче, создавать программное обеспечение для нескольких платформ и устройств. Microsoft поддерживает разработчиков, работающих на любой платформе, для создания программного обеспечения для любых устройств. Microsoft предоставляет эту поддержку многим инструментам, включая .Net, UWP с .Net Standard, Rome, VS Code, Xamarin и WSL. В соответствии с этими изменениями, нужна стратегия инструментального тестирования, которая в равной степени относится к платформе и кросс-устройству, и именно здесь необходим WinAppDriver.

WinAppDriver - это инструмент основанный на открытых стандартах для автоматизации тестирования пользовательского интерфейса. Вы можете использовать WinAppDriver для запуска автоматизированных тестов пользовательского интерфейса для любых Windows 10 приложений. Поддержка открытых стандартов означает, что Вы используете UI Test Automation с помощью Appium или Selenium, Вы можете использовать существующие инструменты и предпочитаемые языки для написания тестов для Windows приложений.

Подробнее о Версии 1.0

Этот выпуск WinAppDriver является первой не-бета-версией по нескольким причинам:

  1. WinAppDriver теперь поддерживает основной набор функций, которые стремительно обновляются и улучшаются.
  2. За последний год Microsoft получили отзывы сообщества и улучшили производительность и качество WinAppDriver на основе Ваших пожеланий. Также, Microsoft благодарны сообществу Appium за добавление WinAppDriver в Appium установщик.
  3. Удаление бета-лейбла показывает, что Microsoft не перестает работать над инструментами Open Standard и планирует улучшать WinAppDriver.
Перспективы на будущее

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

Команда WinAppDriver активно работает над улучшениями, которые включают:

  1. Дополнение к рабочим процессам, таким как непрерывная интеграция
  2. Поддержка мультитач-входа
  3. Поддержка ввода ручкой
  4. Поддержка WinAppDriver на дополнительных Windows устройствах
Где получить обновление?

Вы можете найти v1.0 установщик на странице Github проекта WinAppDriver, там также предоставлены образцы, документация и отслеживание проблем:

Следующая версия Appium (1.7.2) автоматически установит WinAppDriver v1.0 на Ваше устройство, если у Вас его еще нет.

Как отправить отзыв?

Пожалуйста, разместите Ваш отзыв на доске объявлений в Github

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

Чтобы быть в курсе всех WinAppDriver новостей, читайте @mrhassanuz и @yosefdurr.

В заключении

Версия v1.0 WinAppDriver является важным этапом, который больше не содержит бета-лейбла. Попробуйте обновиться до 1.0 версии, как только это будет возможно. Если Вы еще не пробовали WinAppDriver, сейчас самое время.


Posted on 15. March 2017

Материлы доклада App Extensions & App Services

10 марта прошла очередная встреча сообщества разработчиков Uneta.

Материалы моего доклада по теме "UWP: App Extensions and App Services" можно скачать здесь



Posted on 2. March 2017

Выпущенна предварительная сборка 15042 Windows 10 SDK

Microsoft выпустили новое обновление Windows 10 SDK, предварительный просмотр которого будет использован в союзе с Windows 10 Insider Preview (Сборка 15042 и выше). Предварительный SDK это предварительная версия и она не может быть использована в рабочей среде. Пожалуйста, устанавливайте SDK только на Ваш тестовый компьютер. Предварительный SDK сборки 15042 содержит исправления ошибок и изменяет разработку по отношению к контактной API зоне. Если Вы работаете над приложением, которое Вам нужно отправить в магазин, Вам не должны устанавливать предварительный просмотр.

 

Предварительный SDK можно загрузить из раздела разработчиков на Windows Insider.

 Для обратной связи и обновлений по известным вопросам, пожалуйста, смотрите форум разработчиков. По запросам новых функций, зайдите на нашу страницу Windows Platform UserVoice.

Что нового

Никаких API изменений не произошло с момента сборки 15021.

Установка Windows SDK переименована: Если у Вас есть сценарии, предназначенные для установки предыдущего SDK, Вам нужно будет обновить путь, чтобы использовать новое имя: WinSDKSetup.exe.

Теперь Windows SDK будет официально поддерживаться только для Visual Studio 2017 и выше. Вы можете скачать Visual Studio 2017 RC здесь.

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

Шаблон DX12 сбрасывается при запуске сборки 15042: Это известная ошибка в программе установки Windows SDK. Если Вы столкнулись с этой проблемой, Вы можете восстановить SDK, запустив следующую команду из командной строки: C:\program files (x86)\windows kits\10\bin\10.0.15042.0\x86\DismFoDInstall.cmd

Невозможно развернуть на устройстве: Если Вы не можете развернуть Ваше приложение на устройстве или эмуляторе, это может быть из-за неправильной установки Windows IPOverUSB. Чтобы обойти эту проблему:

  1. Откройте ISO
  2. Перейдите в папку WindowsSDK\Installers
  3. Дважды щелкните по файлу "Windows IP Over USB-x86_en-us.msi"
  4. Следуйте указаниям

Происходит сбой комплекта сертификации приложений Windows при запуске из Visual Studio: Если Visual Studio не может развернуть приложение, при запуске может произойти сбой комплекта сертификации приложений Windows. Чтобы обойти эту проблему:

1. Запустите комплект сертификации приложений для Windows с помощью сочетания клавиш Windows

2.   Предоставьте указатель прямо к пакету для запуска тестов

 

API обновления и дополнения

Никаких API изменений не произошло с момента сборки 15021. Для получения списка добавленных API-интерфейсов с момента юбилейного обновления Windows 10, смотрите 15021.