SlideShare a Scribd company logo
1 of 38
Porting projects
to .NET 5
Immo Landwerth
Phillip Carter
Program Managers .NET
.NET 5 Vision Recap
One .NET vision
.NET Framework
Mono / Xamarin
.NET Core.NET
Single SDK, one BCL, unified toolchain
Cross-platform native UI
Cross-platform web UI
Cloud native investments
Continue improvements in speed, size, diagnostics, Azure services
.NET has the best of breed solutions for all modern workloads
– .NET 5 to 6 "wave"
What does this actually mean?
.NET Framework 4.8
Mono / Xamarin
.NET Core 3.1 .NET Core 4.0.NET 5.0
No more features, only fixes
.NET 6
What is not in .NET 5?
• AppDomains, remoting, Web forms, WCF server and
Windows workflow remain on .NET Framework 4.8 only.
• There are no plans to port these.
Component Replacement
AppDomains  AssemblyLoadContext
Remoting  named pipes
 gRPC
WebForms  ASP.NET Blazor
WCF Server  gRPC
 Open source community project: https://github.com/CoreWCF/CoreWCF
WF  Open source community project: https://github.com/UiPath/corewf
Simplified framework names in .NET 5
• net5.0. This is for code that runs everywhere. It combines
and replaces the netcoreapp and netstandard names.
• net5.0-windows (and later net6.0-android and net6.0-
ios). These TFMs represent OS-specific flavors of .NET 5 that
include net5.0 plus OS-specific functionality.
netX.Y-windows
netX.Y
netX.Y-android netX.Y-ios netX.Y-<os>
netcoreapp3.1
netstandard2.1
What will Microsoft libraries target?
Area Target Framework
Cross Platform Libraries
ASP.NET Core, EF, virtually all System.*
packages, most libraries
net5.0
Windows Controls
WinForms-, WPF-, and (managed) UWP controls
net5.0-windows
Cross Platform Abstractions
Xamarin Essentials, Xamarin Forms, MAUI, or
any other cross-platform abstraction
net5.0
And each OS-specific framework that it
provides implementations for
Cross Platform Libraries for .NET Framework
Azure SDK, Microsoft.Data.SqlClient and other
packages that need to support .NET Framework
netstandard2.0
What should you target?
• Continue to use netstandard2.0 to share
code between .NET Framework and all other
platforms.
• Consider using netstandard2.1 to share code
between Mono, Xamarin, and .NET Core 3.x
(less relevant with .NET 6).
• Use net5.0 for code sharing moving forward.
Porting to .NET 5
• Understand if you need to port at all
• Only port projects that you need to innovate in
• Maintenance-only projects can safely remain on
.NET Framework
• Make note of your desired target:
• .NET Core 3.1 vs. .NET 5
• Windows vs. MacOS vs. Linux
• Plan & ensure you have click stops
• So that you can keep shipping working software
2. Inventory
3. Convert Project
4. Move to .NET 5
5. Move to other OS
1. Understand goals
Porting to .NET 5
• Inventory your code and its dependencies
• Use API Port to do that
• Analyze your code for legacy
• Maybe you can drop that before porting
• Analyze your dependencies
• Ensure they offer support for .NET 5
3. Convert Project
4. Move to .NET 5
5. Move to other OS
1. Understand goals
2. Inventory
Porting to .NET 5
• Replace packages.config
• With <PackageReference> elements in the project
• Migrate the project files to SDK-style
• Use Try-Convert to automate this
• Consider only migrating the project files
• and not changing the target framework yet
• Click stops!
2. Inventory
4. Move to .NET 5
5. Move to other OS
1. Understand goals
3. Convert Project
Porting to .NET 5
• Understand your dependency graph
• Identify if you have shared components that needs
to continue to work on .NET Framework
• Retarget those to .NET Standard
• Retarget remainder to .NET Core 3.1 or
.NET 5
2. Inventory
3. Convert Project
5. Move to other OS
1. Understand goals
4. Move to .NET 5
Porting to .NET 5
• If you want to go cross-platform:
• Ensure you have a CI system that can support
multiple legs
• Azure DevOps, GitHub actions etc.
• Add a leg per operating system
• And run tests!
2. Inventory
3. Convert Project
4. Move to .NET 5
1. Understand goals
5. Move to other OS
Demo
try-convert on a solution
Try-Convert Limitations
• It can’t convert some project types, such as
• ASP.NET
• Xamarin
• It doesn’t migrate any source code (*.cs), only project files
(*.csproj)
Docs!
We have docs that cover how to port to .NET 5
and what tools to use
https://aka.ms/net-porting-docs
API Port
Use it to assess understand your application
its dependencies, and how compatible they
are with .NET Core
$ dotnet tool install –g apiport
Try-Convert
Use it to convert your project files to .NET 5
and .NET Standard
dotnet tool install -g try-convert
Visual Studio 2019 16.8 GA and 16.9 Preview
visualstudio.com/download
aka.ms/vs-preview
Dev environments in the cloud .NET productivity
AI-assisted productivity
Automated CI/CD workflow Preview
Git workflows
Linux diagnostics
XAML productivity
• GitHub Codespaces available as a limited “preview”
for ASP.NET Core, .NET Core and C++
• Team Completions: Get C# contextual suggestions for
your own types, through custom models shared with
your team
• GitHub Actions workflow from within Visual Studio for
your .NET Core apps
• Easily execute your daily Git operations using the Git
Changes window
• Browse and manage your Git repository and stop
worrying about merge conflicts
• Roslyn analyzers are now included in the .NET 5.0 SDK
• .NET Code Style analyzers can now be enforced on build Preview
• .NET Core Debugging with WSL 2 using the
Linux distro of your choice Preview
• Debug managed Linux core dump
• XAML Binding Failures diagnostic
improvements
• XAML Hot Reload supports UWP
Q& A
Immo Landwerth
Program Manager .NET
@terrajobst
Phillip Carter
Program Manager .NET
@_cartermp
Thanks for joining!
Single column of content
Two columns of content
Demo
Presenter
Code Sample
Code sample
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5
Porting Projects to .NET 5

More Related Content

What's hot

2.3 (Architecture) Moving to Managed Code
2.3   (Architecture) Moving to Managed Code2.3   (Architecture) Moving to Managed Code
2.3 (Architecture) Moving to Managed CodeMicro Focus
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestCompleteSmartBear
 
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...Flink Forward
 
2013 t-dose - libre office easyhacks
2013   t-dose - libre office easyhacks2013   t-dose - libre office easyhacks
2013 t-dose - libre office easyhacksRob Snelders
 
Apache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónApache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónGlobant
 
What we do with Go
What we do with GoWhat we do with Go
What we do with GoMarcelLanz
 
Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemPronovix
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for BeginnersNebulaworks
 
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsSmartBear
 
IE WebGL and Babylon.js (Web3D 2014)
IE WebGL and Babylon.js (Web3D 2014)IE WebGL and Babylon.js (Web3D 2014)
IE WebGL and Babylon.js (Web3D 2014)David Catuhe
 
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...MarcelLanz
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Rodolfo Finochietti
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesAbhinav Gupta
 
Advancing Your API Strategy in an Infrastructure World
Advancing Your API Strategy in an Infrastructure WorldAdvancing Your API Strategy in an Infrastructure World
Advancing Your API Strategy in an Infrastructure WorldPronovix
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
 

What's hot (20)

2.3 (Architecture) Moving to Managed Code
2.3   (Architecture) Moving to Managed Code2.3   (Architecture) Moving to Managed Code
2.3 (Architecture) Moving to Managed Code
 
Testing Without a GUI Using TestComplete
 Testing Without a GUI Using TestComplete Testing Without a GUI Using TestComplete
Testing Without a GUI Using TestComplete
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Hidden Dragons of CGO
Hidden Dragons of CGOHidden Dragons of CGO
Hidden Dragons of CGO
 
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...
Flink Forward San Francisco 2019: Managing Flink on Kubernetes - FlinkK8sOper...
 
2013 t-dose - libre office easyhacks
2013   t-dose - libre office easyhacks2013   t-dose - libre office easyhacks
2013 t-dose - libre office easyhacks
 
Apache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónApache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisión
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
 
Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for Beginners
 
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
apidays LIVE Helsinki - Implementing OpenAPI and GraphQL Services with gRPC b...
 
Hidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script ExtensionsHidden Treasure - TestComplete Script Extensions
Hidden Treasure - TestComplete Script Extensions
 
IE WebGL and Babylon.js (Web3D 2014)
IE WebGL and Babylon.js (Web3D 2014)IE WebGL and Babylon.js (Web3D 2014)
IE WebGL and Babylon.js (Web3D 2014)
 
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
eigr.io – a Serverless Runtime on the BEAM (ACM SIGPLAN, ICFP 2021 Erlang Wor...
 
CI/CD with Bitbucket pipelines
CI/CD with Bitbucket pipelinesCI/CD with Bitbucket pipelines
CI/CD with Bitbucket pipelines
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
 
Kotlin
KotlinKotlin
Kotlin
 
Advancing Your API Strategy in an Infrastructure World
Advancing Your API Strategy in an Infrastructure WorldAdvancing Your API Strategy in an Infrastructure World
Advancing Your API Strategy in an Infrastructure World
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 

Similar to Porting Projects to .NET 5

ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsKen Cenerelli
 
Visual studio 2015 and .net core 5 – get ready to rumble
Visual studio 2015 and .net core 5  – get ready to rumbleVisual studio 2015 and .net core 5  – get ready to rumble
Visual studio 2015 and .net core 5 – get ready to rumbleTadeusz Balcer
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedAlex Thissen
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014FalafelSoftware
 
Get acquainted with the new ASP.Net 5
Get acquainted with the new ASP.Net 5Get acquainted with the new ASP.Net 5
Get acquainted with the new ASP.Net 5Suyati Technologies
 
Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019Rory Preddy
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern DesktopOren Novotny
 
Deploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesDeploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesPratik Khasnabis
 
.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1aminmesbahi
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformJeffrey T. Fritz
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparisonKaty Slemon
 
.Net Core 3.0. What’s inside? Павло Голубович
.Net Core 3.0. What’s inside? Павло Голубович.Net Core 3.0. What’s inside? Павло Голубович
.Net Core 3.0. What’s inside? Павло ГолубовичSigma Software
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareRitwik Das
 
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAmazon Web Services
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesVagif Abilov
 

Similar to Porting Projects to .NET 5 (20)

ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
Visual studio 2015 and .net core 5 – get ready to rumble
Visual studio 2015 and .net core 5  – get ready to rumbleVisual studio 2015 and .net core 5  – get ready to rumble
Visual studio 2015 and .net core 5 – get ready to rumble
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimagined
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Mini .net conf 2020
Mini .net conf 2020Mini .net conf 2020
Mini .net conf 2020
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
 
Get acquainted with the new ASP.Net 5
Get acquainted with the new ASP.Net 5Get acquainted with the new ASP.Net 5
Get acquainted with the new ASP.Net 5
 
Whats new in .net for 2019
Whats new in .net for 2019Whats new in .net for 2019
Whats new in .net for 2019
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
Deploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM TemplatesDeploy a Website in Azure using ARM Templates
Deploy a Website in Azure using ARM Templates
 
.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1.NET Core, ASP.NET Core Course, Session 1
.NET Core, ASP.NET Core Course, Session 1
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
 
.Net framework vs .net core a complete comparison
.Net framework vs .net core  a complete comparison.Net framework vs .net core  a complete comparison
.Net framework vs .net core a complete comparison
 
Dotnet on linux
Dotnet on linuxDotnet on linux
Dotnet on linux
 
Zend Framwork presentation
Zend Framwork presentationZend Framwork presentation
Zend Framwork presentation
 
.Net Core 3.0. What’s inside? Павло Голубович
.Net Core 3.0. What’s inside? Павло Голубович.Net Core 3.0. What’s inside? Павло Голубович
.Net Core 3.0. What’s inside? Павло Голубович
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech Software
 
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class Libraries
 

Recently uploaded

WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 

Recently uploaded (20)

WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 

Porting Projects to .NET 5

  • 1. Porting projects to .NET 5 Immo Landwerth Phillip Carter Program Managers .NET
  • 3. One .NET vision .NET Framework Mono / Xamarin .NET Core.NET Single SDK, one BCL, unified toolchain Cross-platform native UI Cross-platform web UI Cloud native investments Continue improvements in speed, size, diagnostics, Azure services .NET has the best of breed solutions for all modern workloads – .NET 5 to 6 "wave"
  • 4. What does this actually mean? .NET Framework 4.8 Mono / Xamarin .NET Core 3.1 .NET Core 4.0.NET 5.0 No more features, only fixes .NET 6
  • 5. What is not in .NET 5? • AppDomains, remoting, Web forms, WCF server and Windows workflow remain on .NET Framework 4.8 only. • There are no plans to port these. Component Replacement AppDomains  AssemblyLoadContext Remoting  named pipes  gRPC WebForms  ASP.NET Blazor WCF Server  gRPC  Open source community project: https://github.com/CoreWCF/CoreWCF WF  Open source community project: https://github.com/UiPath/corewf
  • 6. Simplified framework names in .NET 5 • net5.0. This is for code that runs everywhere. It combines and replaces the netcoreapp and netstandard names. • net5.0-windows (and later net6.0-android and net6.0- ios). These TFMs represent OS-specific flavors of .NET 5 that include net5.0 plus OS-specific functionality. netX.Y-windows netX.Y netX.Y-android netX.Y-ios netX.Y-<os> netcoreapp3.1 netstandard2.1
  • 7. What will Microsoft libraries target? Area Target Framework Cross Platform Libraries ASP.NET Core, EF, virtually all System.* packages, most libraries net5.0 Windows Controls WinForms-, WPF-, and (managed) UWP controls net5.0-windows Cross Platform Abstractions Xamarin Essentials, Xamarin Forms, MAUI, or any other cross-platform abstraction net5.0 And each OS-specific framework that it provides implementations for Cross Platform Libraries for .NET Framework Azure SDK, Microsoft.Data.SqlClient and other packages that need to support .NET Framework netstandard2.0
  • 8. What should you target? • Continue to use netstandard2.0 to share code between .NET Framework and all other platforms. • Consider using netstandard2.1 to share code between Mono, Xamarin, and .NET Core 3.x (less relevant with .NET 6). • Use net5.0 for code sharing moving forward.
  • 9. Porting to .NET 5 • Understand if you need to port at all • Only port projects that you need to innovate in • Maintenance-only projects can safely remain on .NET Framework • Make note of your desired target: • .NET Core 3.1 vs. .NET 5 • Windows vs. MacOS vs. Linux • Plan & ensure you have click stops • So that you can keep shipping working software 2. Inventory 3. Convert Project 4. Move to .NET 5 5. Move to other OS 1. Understand goals
  • 10. Porting to .NET 5 • Inventory your code and its dependencies • Use API Port to do that • Analyze your code for legacy • Maybe you can drop that before porting • Analyze your dependencies • Ensure they offer support for .NET 5 3. Convert Project 4. Move to .NET 5 5. Move to other OS 1. Understand goals 2. Inventory
  • 11. Porting to .NET 5 • Replace packages.config • With <PackageReference> elements in the project • Migrate the project files to SDK-style • Use Try-Convert to automate this • Consider only migrating the project files • and not changing the target framework yet • Click stops! 2. Inventory 4. Move to .NET 5 5. Move to other OS 1. Understand goals 3. Convert Project
  • 12. Porting to .NET 5 • Understand your dependency graph • Identify if you have shared components that needs to continue to work on .NET Framework • Retarget those to .NET Standard • Retarget remainder to .NET Core 3.1 or .NET 5 2. Inventory 3. Convert Project 5. Move to other OS 1. Understand goals 4. Move to .NET 5
  • 13. Porting to .NET 5 • If you want to go cross-platform: • Ensure you have a CI system that can support multiple legs • Azure DevOps, GitHub actions etc. • Add a leg per operating system • And run tests! 2. Inventory 3. Convert Project 4. Move to .NET 5 1. Understand goals 5. Move to other OS
  • 15. Try-Convert Limitations • It can’t convert some project types, such as • ASP.NET • Xamarin • It doesn’t migrate any source code (*.cs), only project files (*.csproj)
  • 16. Docs! We have docs that cover how to port to .NET 5 and what tools to use https://aka.ms/net-porting-docs
  • 17. API Port Use it to assess understand your application its dependencies, and how compatible they are with .NET Core $ dotnet tool install –g apiport
  • 18. Try-Convert Use it to convert your project files to .NET 5 and .NET Standard dotnet tool install -g try-convert
  • 19. Visual Studio 2019 16.8 GA and 16.9 Preview visualstudio.com/download aka.ms/vs-preview Dev environments in the cloud .NET productivity AI-assisted productivity Automated CI/CD workflow Preview Git workflows Linux diagnostics XAML productivity • GitHub Codespaces available as a limited “preview” for ASP.NET Core, .NET Core and C++ • Team Completions: Get C# contextual suggestions for your own types, through custom models shared with your team • GitHub Actions workflow from within Visual Studio for your .NET Core apps • Easily execute your daily Git operations using the Git Changes window • Browse and manage your Git repository and stop worrying about merge conflicts • Roslyn analyzers are now included in the .NET 5.0 SDK • .NET Code Style analyzers can now be enforced on build Preview • .NET Core Debugging with WSL 2 using the Linux distro of your choice Preview • Debug managed Linux core dump • XAML Binding Failures diagnostic improvements • XAML Hot Reload supports UWP
  • 20. Q& A Immo Landwerth Program Manager .NET @terrajobst Phillip Carter Program Manager .NET @_cartermp
  • 22.
  • 23. Single column of content
  • 24. Two columns of content

Editor's Notes

  1. Animated slide Our vision for one .NET is to simplify the platform and choices for .NET developers and provide a single stack that supports the best of breed solutions for all modern workloads. Last year at Build, we laid out our vision for one .NET starting with .NET 5. We said we would take .NET Core and Mono/Xamarin implementations and unify them into one base class library (BCL) and toolchain (SDK). In the wake of the global health pandemic, we have had to adapt to the changing needs of our customers and provide the support needed to assist with smooth operations. Our efforts continue to be anchored in helping our customers address their most urgent needs. As a result, we expect these features to be available in preview for the .NET 5 release but the unification will be truly completed with .NET 6, our Long-Term Support (LTS) release.  Our vision has not changed, but our timeline has. .NET 5 will have several cloud & web investments, such as smaller, faster, single file EXEs that use less memory which are appropriate for microservices and containerized applications across operating systems. We will continue to build on the work we have done. We are still committed to one .NET platform and delivering a quality .NET 5 release to our millions of users in November this year. You will continue to see a wave of innovation happening with multiple previews along the way on the journey to one .NET.