SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
Micro Focus
 
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
 
Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
Pronovix
 

Was ist angesagt? (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...
 

Ähnlich wie Porting Projects to .NET 5

Ähnlich wie 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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 

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

Hinweis der Redaktion

  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.