마이크로소프트의 Contoso UWP앱을 UnoContoso 앱으로 포팅한 결과를 다루는 것으로, Uno Platform으로 비지니스 앱을 만들 수 있는지 여러분들이 판단해 보시기 바랍니다.

 

My troubles

  • Does the UI output the same for each platform?
  • I haven't made any Android or iOS apps before. Is it okay?
  • Can it run on Windows 7?
  • It's nice if it runs on macOS too...(Even a simple screen...)
  • Are there cross-platforms running on IoT devices?
  • Will there be enough performance to use for each platform without any problems?

Contoso UWP app

UnoContoso app

 

 

Difficulties in porting

Can I make business apps with the Uno Platform.pdf
1.14MB

youtu.be/ANPVsLc5Hoo

 

블로그 이미지

kaki104

This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet https://twitter.com/kaki104

댓글을 달아 주세요

Micorosft .NET 5 RC1 버전이 발표되었습니다. 이제 .Net Framework와 .Net Core의 통합이 눈앞에 온 것 같습니다. 이 새로운 .NET 5 버전은 2020년 11월 10일 정식 출시 예정입니다.

 

.NET 5의 목표는 모든 .NET 5 애플리케이션에서 단일 BCL(Base Class Library)를 사용하고, 여러 플랫폼에서 네이티브 및 웹 애플리케이션을 지원하는 통합 .NET SDK 환경을 제공하는 것입니다. 그래서, 단인 .NET 5 애플리케이션 프로젝트를 생성하고 Windows, Microsoft Duo(Android) 및 Apple iOS와 같은 플랫폼을 지원할 것입니다.

 

 

Reference

Announcing .NET 5.0 Preview 8 | .NET Blog (microsoft.com)

Announcing .NET 5.0 RC 1 | .NET Blog (microsoft.com)

What’s new in Microsoft .NET 5 | InfoWorld

 

Download

Download .NET 5.0 (Linux, macOS, and Windows) (microsoft.com)

  • Full version
    • 5.0.100-rc.1.20452.10
  • Visual Studio support
    • Visual Studio 2019 (v16.8, Preview 3)
    • 비주얼 스튜디오 Preview에서 테스트를 하기위한 최소 버전입니다.
  • Included runtimes
    • .NET Runtime 5.0.0-rc.1.20451.14
    • ASP.NET Core Runtime 5.0.0-rc.1.20451.14
    • .NET Desktop Runtime 5.0.0-rc.1.20451.14
  • Language support
    • C# 9.0-preview
    • F# 5.0-preview
    • Visual Basic 15.5

 

Languages

  • C# 9.0
    • Top-level programs
      • 기존에 console 앱 생성 후에 있던 모든 코드가 필요없습니다. 아래 코드를 삭제하고
      • namespace ConsoleApp1
        {
            class Program
            {
                static void Main(string[] args)
                {
                    Console.WriteLine("Hello World!");
                }
            }
        }
      • 간단하게!!
      • Console.WriteLine("Hello World!");
      • 최종적으로 이런 코딩이 가능합니다. 
      • using System;
        using System.Runtime.InteropServices;
        
        Console.WriteLine("Hello World!");
        FromWhom();
        Show.Excitement("Top-level programs can be brief, and can grow as slowly or quickly in complexity as you'd like", 8);
        
        void FromWhom()
        {
            Console.WriteLine($"From {RuntimeInformation.FrameworkDescription}");
        }
        
        internal class Show
        {
            internal static void Excitement(string message, int levelOf)
            {
                Console.Write(message);
        
                for (int i = 0; i < levelOf; i++)
                {
                    Console.Write("!");
                }
        
                Console.WriteLine();
            }
        }
    • Pattern matching
      • 값이 특정 모양을 가지고 있는지 테스트하고 일치하는 모양이있을 때 값에서 정보를 추출하는 기능입니다.
      • if (context is {IsReachable: true, Length: > 1 })
        {
            Console.WriteLine(context.Name);
        }
    • Target-typed new expressions
      • 객체/값을 생성할 때 유형 중복을 제거하도록 개선되었습니다.
      • List<string> values = new List<string>();
        List<string> values = new();
        var values = new List<string>();
  • F# 5.0
    • Interpolated Strings
    • Open Type Declarations

Tools

  • Microsoft.Extensions.Logging
    • Implement a custom ConsoleFormatter
    • 콘솔 프로바이더를 개선해서 사용자가 지정한 포멧으로 콘솔 출력의 서식 및 색상을 지정할 수 있습니다.
  • Dump debugging
    • Compile the Linux DAC
    • 리눅스 DAC를 컴파일할수 있어서 DAC에 대한 디버깅이 가능합니다.
  • Assembly load diagnostics added to event pipe
    • 이벤트 파이프에 어셈블리 로드 정보를 추가했습니다.
  • Printing environment information
    • .NET의 환경 정보를 쉽게 출력할 수 있도록 Tool을 추가했습니다. 
    • dotnet tool install –g dotnet-runtimeinfo
    • dotnet-runtimeinfo

Library APIs

  • Nullable Annotations
    • The platform is now 80% annotated for nullability
    • null 허용 여부에 대한 주석을 전체 80% 정도 추가했으며, 정식버전 출시전까지 나머지도 추가할 예정입니다.
  • Regular expression performance improvements
    • 정규식 엔진의 성능을 개선했습니다.
  • .NET 5.0 Target Framework
    • net5.0 is the new Target Framework Moniker (TFM) for .NET 5.0.
    • 타겟 플렛폼으로 .NET 5를 사용할 수 있습니다.
    • net5.0 combines and replaces netcoreapp and netstandard TFMs.
    • core와 netstandard를 통합하고 대체합니다.
    • net5.0 supports .NET Framework compatibility mode
    • .NET Framework 호환모드를 지원합니다.
    • net5.0-windows will be used to expose Windows-specific functionality, like Windows Forms and WPF.
    • net5.0-windows는 윈폼 및 WPF에서 윈도우 기능을 이용하기 위해 사용됩니다.
    • NET 6.0 will use the same approach, with net6.0 and will add net6.0-ios and net6.0-android. 
    • The OS-specific TFMs can include OS version numbers, like net6.0-ios14.
    • OS별 타겟 플렛폼은 OS 버전 번호가 포함될 수 있습니다.
    • Portable APIs, like ASP.NET Core and Xamarin.Forms, will be usable with net5.0.
    • 포터블 API들은 net5.0에서 사용할 수 있습니다.
  • WinRT Interop(Breaking Change)
    • New model for supporting WinRT APIs as part of .NET 5.0
    • WinRT API를 새로운 모델로 만들어서 .NET 5.0에 포함시겼습니다.
    • It can be developed and improved separate from the .NET runtime.
    • .NET 런타임과 별도로 개발 및 개선이 가능합니다.
    • Symmetrical with interop systems provided for other OSes, like iOS and Android.
    • iOS 및 Android와 같은 다른 OS에 제공되는 interop 시스템과 대칭이 되도록 구성했습니다.
    • Can take advantage of many other .NET features (AOT, C# features, IL linking).
    • 다른 많은 .NET 기능을 활용할 수 있습니다.
    • Simplifies the .NET runtime codebase.

Runtime Technology

  • Windows ARM64
    • Support for Windows ARM64 as part of this release
    • Windows ARM64에 대한 지원을 추가했습니다.
    • Decision to delay the Windows Desktop component(Windows Forms, WPF)
    • 하지만, 윈폼과 WPF 등의 윈도우 데스크탑 컴포넌트에 대한 지원은 지연되었습니다.
  • Event pipe profiler APIs
    • 프로파일러가 이벤트 파이프 이벤트를 작성할 수 있도록 확장되었습니다.
  • Native exports
    • Export managed methods to native code
    • 관리되는 메서드를 네이티브 코드로 내보낼 수 있습니다.
    • Unmanaged Exports
    • DllExport

Application deployment

  • Single file applications
    • Published and deployed as a single file
    • 단일 파일로 게시 및 배포를 할 수 잇습니다.
    • The app and its dependencies are all included within that file
    • 앱과 종속성 파일들을 모두 포함 합니다.
    • Single file apps are primarily focused on Linux
    • 다일 파일 앱은 주로 리눅스 배포에 중점을 두고 있습니다.
    • Framework-dependent single-file app:
      • dotnet publish -r linux-x64 --self-contained false /p:PublishSingleFile=true
    • Self-contained single-file app with assembly trimming and ready to run enabled:
      • dotnet publish -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true /p:PublishReadyToRun=true
  • Reducing the size of container images
    • .NET 컨테이너 이미지의 크기를 줄였습니다.
  • ClickOnce Support
    • Deliver it as part of RC2
    • 닷넷 코어에서 클릭원스를 지원하기 위한 개발을 진행 중에 있습니다.

더 자세한 사항은 러퍼런스를 클릭해서 확인하시면 될 것 같습니다.

'Visual Studio' 카테고리의 다른 글

What's New in Visual Studio 2019 version 16.8  (0) 2020.11.26
Welcome to C# 9.0  (0) 2020.11.24
Announcing .NET 5.0 RC1  (0) 2020.10.08
What's new in ML.NET  (0) 2020.06.17
Modernizing .NET Desktop Applications with .NET Core  (0) 2019.10.07
What's New In C# 8.0 Part 2  (0) 2019.09.30
블로그 이미지

kaki104

This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet https://twitter.com/kaki104

Tag net5.0

댓글을 달아 주세요

Running UWP on Linux with Uno Platform

Youtube Channel : https://youtube.com/FutureOfDotNet

Reference

Windows Terminal

.NET Core SDK 3.1.100

Uno ProjectTemplates

WSL2(Windows Subsystem for Linux)

Install Ubuntu 20.04 LTS

Install X410

X410 setting

  • Allow Public Networks

Test WSL2 + X Window Server

  • sudo apt-get update
  • sudo apt-get install vim-gtk

Find my IP address

  • ipconfig
  • WSL -> IPv4 Address : 172.28.176.1

Export Display Setting

  • export DISPLAY=[IP Address]:0
    • ex) export DISPLAY=172.28.176.1:0

Execute gvim

Create and Publish an Uno project

  • dotnet new unoapp -o UnoLinux -w=false -wasm=false -ios=false -android=false -macos=false -sw=false
  • cd .\UnoLinux\UnoLinux.Skia.Gtk\
  • dotnet build
  • dotnet publish --runtime linux-x64 -c Release --self-contained

Running UWP on Ubuntu

  • cd /mnt/[DRIVE LETTER]/[PATH]/UnoLinux/UnoLinux.Skia.Gtk/bin/Release/netcoreapp3.1/linux-x64
    • Ex) cd /mnt/c/users/kaki1/UnoLinux/UnoLinux.Skia.Gtk/bin/Release/netcoreapp3.1/Linux-x64
  • ./UnoLinux.Skia.Gtk

UWP app running in Ubuntu

  • Uno UWP app
  • Rendering to a Skia backend
  • GTK host
  • Ubuntu
  • Windows Subsystem for Linux 2
블로그 이미지

kaki104

This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet https://twitter.com/kaki104

댓글을 달아 주세요

Register Desktop Bridge app and UWP app as Startup program

Future Of DotNet
https://youtube.com/FutureOfDotNet

UWP앱을 시작프로그램으로 등록/삭제하는 방법입니다.

Youtube : https://youtu.be/5cI6oS0HLOQ
Blog : https://kaki104.tistory.com/664
Git : https://github.com/kaki104/StartupSample

Reference

Desktop Bridge vs UWP

  • How
  • Namespace
  • EntryPoint
  • Enabled
  • Multiple startupTask
  • Diabled/Enabled

Constrained in UWP apps

  • The default is Disable
  • Show a user-prompt dialog for UWP apps
  • StartupTask includes a Disable method
  • If the user disables, then the prompt is not shown again
  • If the feature is disabled by local admin or group policy, then the user prompt is not shown, and startup cannot be enabled
  • Platforms other than Desktop that don’t support startup tasks also report DisabledByPolicy

Package.appxmanifest

<Application>
    <Extensions>
        <uap5:Extension Category="windows.startupTask“ Executable="StartupXXX.exe“ EntryPoint="StartupXXX.App">
            <uap5:StartupTask TaskId="StartupXXX“ Enabled="false“ DisplayName="StartupXXX“/>
        </uap5:Extension>
    </Extensions>
</Application>

MainPage.xaml.cs

var startupTask = await StartupTask.GetAsync("StartupXXX");
StartupTaskState newState = await startupTask.RequestEnableAsync();

App.xaml.cs

protected override void OnActivated(IActivatedEventArgs args)

var staea = args as StartupTaskActivatedEventArgs;
rootFrame.Navigate(typeof(MainPage), staea.TaskId);
Window.Current.Activate();

Register startup program.pdf
190.9 kB

블로그 이미지

kaki104

This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet https://twitter.com/kaki104

댓글을 달아 주세요

WebView2 Control Preview 버전이 얼마전에 공개되었습니다.

Introduction to Microsoft Edge WebView2 (Preview)

  • https://bit.ly/3alYpOW
  • 응용 프로그램에 웹 기술(HTML, CSS 및 JavaScript)을 포함 할 수 있음
    Microsoft Edge (Chromium)을 렌더링 엔진으로 사용 – 호환성 향상
  • Preview 버전이므로, 프로덕션 앱에 이 버전을 사용 금지

Supported platforms

  • Environments
    • Win32 C/C++
    • .NET Framework 4.6.2 or later
    • .NET Core 3.0 or later
    • WinUI 3.0
  • Windows
    • Windows 10
    • Windows 8.1
    • Windows 8
    • Windows 7
    • Windows Server 2016, 2012, 2012 R2, 2008 R2

Getting started with WebView2 in WPF (Preview)

  • https://bit.ly/31O9wMM
  • Prerequisites
    • Microsoft Edge (Chromium) Canary channel installed on Windows 10, Windows 8.1 or Windows 7
    • Visual Studio 2017 or later
  • 오류 해결

WebView2 nuget package

  • Important
    • Ensure you check Include prerelease, select a prerelease package in Version, and then choose Install.
  • 8/17/2020
    • Microsoft.Web.WebView2 version 0.9.579-prerelease
      • Minimum Microsoft Edge version 86.0.579.0
    • Canary Microsoft Edge version 86.0.608.0
      • How to check the version
        • … → Help and feedback → About Microsoft Edge

Youtube :

Microsoft Edge(Chromium) WebView Control.pdf
0.34MB

블로그 이미지

kaki104

This blog covers the latest technologies in Microsoft .Net. In 2020, I will be talking about Uno Platform frequently. http://youtube.com/FutureOfDotNet https://twitter.com/kaki104

댓글을 달아 주세요