27.8K Views
March 17, 21
スライド概要
2021/03/15
勉強会の資料
I'm a software development engineer. (Microsoft MVP Jul. 2005 - Jun. 2021)
.NET 5 勉強会 ~ .NET Framework から .NET へ ~ 2021/03/15 小島 富治雄
前提条件とゴール 2
アジェンダ
1. .NET 5 概要 WPF Windows Forms ASP.NET WPF (Windows) Windows Forms (Windows) UWP (Windows) ASP.NET iOS Android Windows macOS .NET Standard Library 4
開発環境 https://dotnet.microsoft.com/download/dotnet/5.0 https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-5.0.200-windows-x64-installer 5
6
One .NET WPF Windows Forms ASP.NET WPF (Windows) Windows Forms (Windows) UWP (Windows) ASP.NET iOS Android Windows macOS .NET Standard Library 7
One .NET WPF Windows Forms ASP.NET WPF (Windows) Windows Forms (Windows) UWP (Windows) ASP.NET iOS Android Windows macOS .NET Standard Library 8
One .NET WPF Windows Forms ASP.NET WPF (Windows) Windows Forms (Windows) UWP (Windows) ASP.NET MAUI (Xamarinの後継) iOS Android Windows macOS .NET Standard Library 9
.NET のロードマップ 10
.NET Framework と .NET (Core) のパフォーマンス Performance Improvements in .NET 5 | .NET Blog (microsoft.com) Round 19 results - TechEmpower Framework Benchmarks 11
.NET 5 採用の注意点 Getting Started with Entity Framework Core: Database-First Development - CodeProject • .NET 5 に含まれないものがある • WCF (Windows Communication Foundation) • WF (Workflow Foundation) • ASP.NET Web Forms 12
.NET 5 採用の注意点 • ASP.NET や EntityFramework などは、変更されていて互換性がやや低い ASP.NET 4.x と ASP.NET Core の選択 | Microsoft Docs EF6 と EF Core を比較する | Microsoft Docs 13
【参考】 MAUI (Multi-platform App UI) 14
【参考】 MAUI (Multi-platform App UI) The Future of Native Apps Development in .NET 6 - YouTube 15
【参考】 MAUI (Multi-platform App UI) The Future of Native Apps Development in .NET 6 - YouTube 16
【参考】 MAUI (Multi-platform App UI) The Future of Native Apps Development in .NET 6 - YouTube 17
【参考】 Blazor 18
【参考】 Blazor の種類 19
【参考】 Blazor の種類 20
【参考】 Blazor 21
2. .NET Framework との違い WPF Windows Forms ASP.NET WPF (Windows) Windows Forms (Windows) UWP (Windows) ASP.NET iOS Android Windows macOS .NET Standard Library 22
.NET Framework と .NET .NET Framework .NET 5 .NET 6 動作OS Windows Windows, Mac, Linux (*) Windows, Mac, Linux, iOS, Android (*) 開発OS Windows Windows, Mac, Linux Windows, Mac, Linux Visual Studio, Visual Studio for Mac, Visual Studio Code Visual Studio, Visual Studio for Mac, Visual Studio Code 主な開発ツール Visual Studio C# 7.3 (8.0 の一部もサポート) 9.0 C# Next? (*) プロジェクトの種類による 23
.NET Framework 24
.NET .NET Platform · GitHub 25
.NET Framework と .NET のコードの違い .NET Framework から .NET Core への移植 - .NET Core | Microsoft Docs packages.config から PackageReference 形式への移行 | Microsoft Docs .NET Portability Analyzer - .NET | Microsoft Docs 26
【サンプル】 チャット ツール “Chatter” の移植 27
【サンプル】 チャット ツール “Chatter” ソースコー ド Shos.Chatter.NetFramework: Web API, SignalR, Web Client (WPF and Web) for .NET Framework 4.8 | github.com Shos.Chatter: Web API, SignalR, Web Client (WPF and Web) for .NET 5 | github.com 28
.NET 5 版 (移植後) 2
【参考】 プロジェクト ファイルの比較 .NET Framework 4.8 .NET 5 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtens ionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{8DFF5A68-7B65-4D72-AEBE-7B522BBED745}</ProjectGuid> <OutputType>Exe</OutputType> <RootNamespace>ConsoleApp.NetFramework</RootNamespace> <AssemblyName>ConsoleApp.NetFramework</AssemblyName> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <Deterministic>true</Deterministic> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU
【サンプル】 チャット ツール “Chatter” 31
【サンプル】 チャット ツール “Chatter” 32
.NET Portability Analyzer で比較 33
.NET Portability Analyzer で比較 34
.NET Portability Analyzer 35
.NET Portability Analyzer 36
.NET Portability Analyzer 37
try-convert で比較 GitHub - dotnet/try-convert: Helping .NET developers port their projects to .NET Core! 38
try-convert で比較 39
try-convert で比較 40
移植完了後 WinMerge した結果 41
【参考】 Chatter.Models (.NET Framework) 42
【参考】 Chatter.Server (.NET Framework) 43
【参考】 Chatter.Wpf (.NET Framework) 44
【参考】 Chatter.Server (.NET) 45
【参考】 Chatter.Wpf (.NET) 46
3. .NET 5 を体験してみよう 47
.NET プロジェクトの作成 48
.NET プロジェクトの作成 dotnet コマンド - .NET CLI | Microsoft Docs C:\Temp>cd \ C:\>md 20210315 C:\>cd 20210315 C:\20210315>dotnet --version 5.0.201 C:\20210315>dotnet new console -o HelloNetConsole The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on HelloNetConsole\HelloNetConsole.csproj... 復元対象のプロジェクトを決定しています... C:\20210315\HelloNetConsole\HelloNetConsole.csproj を復元しました (81 ms)。 Restore succeeded. C:\20210315\HelloNet>cd HelloNetConsole 49
.NET プロジェクトの作成 C:\20210315\HelloNetConsole>dotnet build .NET 向け Microsoft (R) Build Engine バージョン 16.9.0+57a23d249 Copyright (C) Microsoft Corporation.All rights reserved. 復元対象のプロジェクトを決定しています... 復元対象のすべてのプロジェクトは最新です。 HelloNetConsole -> C:\20210315\HelloNetConsole\bin\Debug\net5.0\HelloNetConsole.dll ビルドに成功しました。 0 個の警告 0 エラー 経過時間 00:00:05.66 C:\20210315\HelloNetConsole>dotnet bin\Debug\net5.0\HelloNetConsole.dll Hello World! C:\20210315\HelloNetConsole>bin\Debug\net5.0\HelloNetConsole.exe Hello World! 50
.NET プロジェクトの作成 C:\20210315\HelloNetConsole>cd .. C:\20210315>dotnet new webapp --auth Windows -o HelloNetWeb The template "ASP.NET Core Web App" was created successfully. This template contains technologies from parties other than Microsoft, see https://aka.ms/aspnetcore/5.0third-party-notices for details. Processing post-creation actions... Running 'dotnet restore' on HelloNetWeb\HelloNetWeb.csproj... 復元対象のプロジェクトを決定しています... C:\20210315\HelloNetWeb\HelloNetWeb.csproj を復元しました (82 ms)。 Restore succeeded. C:\20210315>devenv HelloNetWeb\HeloNetWeb.csproj 51
.NET プロジェクトの作成 C:\20210315>dotnet new wpf -o HelloNetWpf The template "WPF Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on HelloNetWpf\HelloNetWpf.csproj... 復元対象のプロジェクトを決定しています... C:\20210315\HelloNetWpf\HelloNetWpf.csproj を復元しました (127 ms)。 Restore succeeded. C:\20210315>cd HelloNetWpf C:\20210315\HelloNetWpf>dotnet publish -c Release -r win10-x64 --self-contained true …結果省略… C:\20210315\HelloNetWpf>dir bin\Release\net5.0-windows\win10-x64\publish …結果省略… C:\20210315\HelloNetWpf>bin\Release\net5.0-windows\win10-x64\publish\HelloNetWpf.exe 52
本日の内容
参考文献 .NET | Free. Cross-platform. Open Source. (microsoft.com) Download .NET 5.0 (Linux, macOS, and Windows) (microsoft.com) Announcing .NET 5.0 | .NET Blog (microsoft.com) What's new in .NET 5 | Microsoft Docs Performance Improvements in .NET 5 | .NET Blog (microsoft.com) Breaking changes in .NET 5 - .NET | Microsoft Docs .NET 5.0 の破壊的変更 - .NET | Microsoft Docs .NET 5 Breaking Changes: Historic Technologies (infoq.com) .NET 5 Breaking Changes to the Base Class Library (infoq.com) 54
参考文献 Announcing ASP.NET Core in .NET 5 | ASP.NET Blog (microsoft.com) What's new in ASP.NET Core 5.0 | Microsoft Docs Migrate from ASP.NET Core 3.1 to 5.0 | Microsoft Docs .NET 5 Breaking Changes for ASP.NET Core (infoq.com) Azure Static Web Apps with .NET and Blazor | ASP.NET Blog (microsoft.com) Unified Blazor UI in the Mobile Blazor Bindings Preview 5 | ASP.NET Blog (microsoft.com) 55
参考文献 Announcing the Release of EF Core 5.0 | .NET Blog (microsoft.com) Plan for Entity Framework Core 5.0 | Microsoft Docs What's New in EF Core 5.0 | Microsoft Docs Breaking changes in EF Core 5.0 - EF Core | Microsoft Docs WPF/Windowsフォームに関する.NET 5の大きな変更 (infoq.com) Windows フォームに関する破壊的変更 - .NET | Microsoft Docs Windows Forms 5.0の新機能 (infoq.com) 56
参考文献 Recapping Xamarin Highlights from .NET Conf 2020 | Xamarin Blog (microsoft.com) Introducing .NET Multi-platform App UI | .NET Blog (microsoft.com) The future of .NET Standard | .NET Blog (microsoft.com) Announcing C#/WinRT Version 1.0 with the .NET 5 GA Release - Windows Developer Blog 57
参考文献 [速報]マイクロソフト「.NET 5」正式リリース。1つのフレームワークでWindows/Mac/Linuxの デスクトップ、サーバアプリ、Webアプリなどが開発可能に - Publickey (publickey1.jp) マイクロソフト、「.NET 5.0」を正式リリース--.NETの統合に向けた大きな一歩 - ZDNet Japan クラウドネイティブな「.NET 5」が既存の.NET Frameworkアプリにもたらすインパクト:.NET 5モダナイズ入門(1) - @IT (atmarkit.co.jp) .NET 5世代のALMを意識した、.NET Frameworkアプリのワークロードごとの.NET 5移行戦略:.NET 5モダナイズ入門(2) - @IT (atmarkit.co.jp) .NET 5移行前に知らないと損する、アプリモダナイズのための確認事項: .NET 5モダナイズ入門(3) - @IT (atmarkit.co.jp) 「.NET 5」の正式版がついにリリース!新しく追加された機能をまとめて解説 | GrapeCity.devlog - グレープシティ株式会社 Microsoftが .NET 5 をリリース (infoq.com) 58
参考文献 .NET Core と .NET 5 以降で使用できない .NET Framework テクノロジ | Microsoft Docs 破壊的変更 - .NET Framework から .NET Core | Microsoft Docs ASP.NET MVC から ASP.NET Core MVC への移行 | Microsoft Docs ASP.NET Core でのアプリケーションのスタートアップ | Microsoft Docs .NET Framework と .NET の相違点 - WPF .NET | Microsoft Docs .NET Core 3.0 への WPF アプリの移行 - WPF .NET | Microsoft Docs Windows フォーム アプリを .NET 5 に移行する - Windows Forms .NET | Microsoft Docs 59
参考文献 .NET Conf 2020 | Channel 9 (msdn.com) Keynote - Welcome to .NET 5 | .NET Conf 2020 | Channel 9 (msdn.com) 60