SlideShare a Scribd company logo
.NET Core
Blimey.
@citizenmatt
This is Matt Ellis
He works for Microsoft, and is a developer on
the .NET Core team.

This is not me.
This is Matt Ellis
He works for JetBrains, and is an interested
amateur in .NET Core.

This is me.
What is .NET Core?
New .NET stack - CLR + BCL
Open Source
Cross platform
(eventually)
Standalone -

per-application installs
Factored for modularity -
“cloud optimised”
Everything ships as
NuGet packages,
including the runtime
Not finished…
.NET Core != .NET Framework
NOT a new version of the .NET Framework
• .NET Framework is going nowhere
• .NET Core is 5.0

.NET Framework is 4.6
• .NET Core is a fork of the .NET Framework

Code merged back to TFS
• .NET Core is (currently) a strict subset of
the .NET Framework
• Missing pieces in .NET Core

Windows: WinForms, WPF, COM, etc.

Platform: AppDomains, Remoting,
Reflection.Emit, etc.
• Different constraints:

Ship cycles, compatibility, system wide install
Why?
Multiple .NET stacks.
Incompatibilities
Portable Class Libraries

not scalable
Cross platform
Independent release cycles

Runtime, BCL, apps
Nano Server
Tidy up

15 years of evolution
Why?
Why?
Multiple .NET stacks.
Incompatibilities
Portable Class Libraries

not scalable
Cross platform
Independent release cycles

Runtime, BCL, apps
Nano Server
Tidy up

15 years of evolution
History
Started with .NET Framework 2.0
How do I get it?
NuGet
How do I get it?
DNX - Dot Net Execution Environment
DNX maintained by asp.net team
Stable builds on nuget.org

Unstable on myget.org
.NET Core, .NET Fx and ASP.NET teams maintain own .NET Core builds…
dnvm install latest -r coreclr -u
Build from source!
How do I get it?
Architecture
Boxes and bits.
.NET Native
Alternative runtime
• AOT compilation
• Compiles all dependencies

Tree shaking
• Reflection? Via xml!
• Windows Store apps only
• Closed source
• LLILC - LLVM based JIT/AOT (OSS)
CoreCLR The new runtime.
dotnet/coreclr
JIT compiler (RyuJIT), Garbage Collector, Platform Abstraction Layer - C++
mscorlib (tightly coupled to runtime) - C#
PAL - OS and platform differences. E.g. exception handling, threads, etc.

P/Invoke to OS, FEATURE #ifdefs
Book of the Runtime!
Mirror back to TFS
CoreFX The new BCL.
dotnet/corefx
Factored for modularity - each solution/assembly is a package
Some platform specific implementations, e.g. System.Console,
Process.Interop.Unix.cs, etc.
Might throw PlatformNotSupportedException

(e.g. Console.get_ForegroundColor )
Build is based on project.json, packages as references
Mirrored to TFS + .NET Framework
High compatibility bar for changes, transparent API review process
Console.get_ForegroundColor
PlatformNotSupportedException
AppModels
Or: How do you run a .exe on Unix?
How the application is hosted and run
Environmental services
What is an AppModel?
Bootstrap the CLR
Execute the
application
.NET Framework AppModels
.NET .exe
Originally a native stub that
loaded the CLR (x86 only!)
Special cased by OS loader
since Windows XP
Loads mscoree.dll, which
initialises CLR and executes
app
IIS/asp.net
Pre-IIS 7 - ISAPI filter
IIS 7 directly integrates CLR
Pipes requests/responses to
managed code
Lifetime management
Windows Phone /
Windows Store
Magic!
“Application host” loads CLR
Integrates with environment
events. E.g. suspend and
resume applications
Pre-compiled / .NET Native
corerun
DNX - .NET Execution
Environment (asp.net)
Windows 10 UWP
Applications
.NET Core AppModels
coreconsole /
osxcorebundlerun
DNX
Dot NET Execution Environment
asp.net 5
Targets .NET Core /

.NET Framework /
Mono
In memory compilation
via Roslyn
Changes project system

Reference packages, not assemblies
More…
• Packages for runtime and BCL
• BCL factored into many packages
• NuGet at heart of project system
(DNX)
• NuGet is the new Portable Class
Library
• Sketchy documentation…
NuGet v3
Bleeding edge.
How does this affect us?
Let NuGet be NuGet
Don’t target a
framework
Add NuGet dependencies
for all BCL assemblies
Specify required versions of
BCL assemblies

Let NuGet sort it out
Effectively, there is no
longer a fixed framework
version to target
New Target Framework Monikers
Brand new
• dotnet - - .NET Core contracts. “Replaces” portable- . Use this!

Supports .Net Framework 4.5 and later (inc. Xamarin)
• dnx451 , dnx46 - DNX targeting .NET Framework 4.5.1, 4.6
• dnxcore50 - DNX targeting .NET Core
• uap10.0 - .NET Core 5.0 on Windows. AKA 

(UWP apps. Follows netcore45 / win8 , netcore451 / win81)
dotnet
dnx451 dnx46
dnxcore50
netcore50
netcore45 win8 netcore451 win81
uap10.0
portable-*
Resolution depends on project type
Project understands dotnet TFM:
(UWP, .NET 4.6, ASP.NET 5)
“Modern PCL” with project.json:
(What is a “Modern PCL”?)
More details on docs.nuget.org
dotnet
What About Compatibility?
All .NET Core packages are PCLs. Kinda.
PCL Refresher
1. A PCL is a class library that needs to run on multiple platforms and versions

(e.g. .NET Framework, Windows Phone, Xamarin)
2. It defines a common subset of APIs that are available on ALL of the required
versions of these platforms - a “Profile”
3. When targeting a Profile, the compiler references a set of Reference Assemblies

These describe the API with empty types, and forward types to correct assemblies
4. At runtime, the real assemblies on the target platform implement the APIs

Can also forward types to other assemblies
Portable Class Libraries
• PCL hides platform specific implementation details behind a common API
contract
• Profiles do not scale. The more versions and platforms, the more Profiles…
Why is this important?
Isn’t .NET Core a common, compatible, cross platform implementation?
• The BCL is the Base Class Library. It’s low level, and has to worry about
underlying platform differences, e.g. file IO
• The BCL needs to be abstracted away from the platform, to allow for
platform specific implementations. And refactoring!
Reference Assemblies
BCL packages include a Reference
Assembly in ref
• This is referenced at compile time and
provides the contract for the API, just like
PCL Reference Assemblies
• The runtime implementation

(e.g. libnetcore50 ) handles platform/host
specifics
ref
libdnxcore50
Why is this important?
This is how compatibility works
• Reference Assemblies allow consuming .NET Core packages from .NET
Framework and other PCL platforms
• Reference Assembly provides the contract, forwards any types
• Implementation assemblies provide potential platform specific
implementations
Compatibility (not a guarantee)
• .NET Framework 4.5 can consume .NET Core packages
• .NET Core 5.0 is a subset of .NET Framework 4.6

Should be able to consume .NET Framework 4.6 packages
• .NET Core can consume PCL libs that are compatible with System.Runtime.dll
(facade that forwards to e.g. mscorlib.dll)
• A new PCL Profile will include .NET Core (e.g. )

(Not announced as part of NuGet v3 - dotnet is checked before portable-* ?)
portable-dotnet+…+…
Known Unknowns
• How are OS specific implementations going to be shipped? ( runtimes ?)
• Do we need a Reference Assembly for each package?
• Why do we need platform/host TFMs (e.g. dnxcore50 ) when we can specify
dependencies?
dnxcore50
runtimes
http://docs.nuget.org/Create/uwp-create
What does this mean for Mono?
Lots. Or not much.
Mono == .NET Framework
Mono already
cross platform
Mono’s focus is
non-Windows
mobile (Xamarin)
.NET Core’s focus
is server and
Windows UWP
Mono can include
CoreCLR + CoreFX
code
Where does Roslyn fit in?
Orthogonal.
Runs on .NET
Framework + Mono
Planned for

.NET Core
Compiling

CoreCLR + CoreFX

currently requires Windows
C# compiler

written in C#
.NET Core
Cross platform
Open Source
NuGet everywhere
Bleeding edge
Icons: http://icons8.com/
The future of .NET
Links
CoreCLR - https://www.github.com/dotnet/coreclr
CoreFX - https://www.github.com/dotnet/corefx
DNX - https://github.com/aspnet/Home
NuGet - http://docs.nuget.org
@citizenmatt

More Related Content

What's hot (20)

PPTX
.Net Standard 2.0
Swaminathan Vetri
 
PDF
Dot Net Core
Amir Barylko
 
PDF
Future of .NET - .NET on Non Windows Platforms
Aniruddha Chakrabarti
 
PDF
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
ActiveState
 
PDF
OPNFV/Functest: lessons learned and best practices for VNF test automation
Valentin Boucher
 
PDF
The DNA of OPNFV
Frank Brockners
 
PDF
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
Arnaud Porterie
 
PPTX
.Net Core - not your daddy's dotnet
Rick van den Bosch
 
PPTX
What's New in .Net 4.5
Malam Team
 
PPTX
Symfony 2 under control
Max Romanovsky
 
PDF
What is OPNFV? What does it deliver?
Frank Brockners
 
PDF
.NET on Linux: Entity Framework Core 1.0
All Things Open
 
PPTX
OPNFV: Upstream Headwaters to Full Deployment
OPNFV
 
PPTX
Moving 1,000 Users & 100 Branches into Streams
Perforce
 
PDF
XPDS16: Xen Project Weather Report 2016
The Linux Foundation
 
PDF
ASP.NET on zLinux: A New Workload
Novell
 
PDF
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
Novell
 
PDF
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
GlobalLogic Ukraine
 
PDF
Calling The Notes C Api From Lotus Script
dominion
 
PPTX
ClearCase Escape Plan
Perforce
 
.Net Standard 2.0
Swaminathan Vetri
 
Dot Net Core
Amir Barylko
 
Future of .NET - .NET on Non Windows Platforms
Aniruddha Chakrabarti
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
ActiveState
 
OPNFV/Functest: lessons learned and best practices for VNF test automation
Valentin Boucher
 
The DNA of OPNFV
Frank Brockners
 
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
Arnaud Porterie
 
.Net Core - not your daddy's dotnet
Rick van den Bosch
 
What's New in .Net 4.5
Malam Team
 
Symfony 2 under control
Max Romanovsky
 
What is OPNFV? What does it deliver?
Frank Brockners
 
.NET on Linux: Entity Framework Core 1.0
All Things Open
 
OPNFV: Upstream Headwaters to Full Deployment
OPNFV
 
Moving 1,000 Users & 100 Branches into Streams
Perforce
 
XPDS16: Xen Project Weather Report 2016
The Linux Foundation
 
ASP.NET on zLinux: A New Workload
Novell
 
How to Port Your .NET Applications to Linux Using Mono Tools for Visual Studio
Novell
 
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
GlobalLogic Ukraine
 
Calling The Notes C Api From Lotus Script
dominion
 
ClearCase Escape Plan
Perforce
 

Similar to .net Core Blimey - Smart Devs UG (20)

PDF
Raffaele Rialdi
CodeFest
 
PDF
.NET Core, ASP.NET Core Course, Session 1
Amin Mesbahi
 
PDF
Dot NET Core Interview Questions PDF By ScholarHat
Scholarhat
 
PPTX
.Net Core
Bohdan Pashkovskyi
 
PPTX
Intro to.net core 20170111
Christian Horsdal
 
PDF
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
citizenmatt
 
PPTX
Modern .NET Ecosystem
Andrei Marukovich
 
PPTX
Dotnet on linux
Ebram Tharwat
 
PPTX
Key Steps in Developing .NET Core Applications
Damir Dobric
 
PPTX
Overview of the new .NET Core and .NET Platform Standard
Alex Thissen
 
PPTX
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher
 
PDF
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp
 
PPTX
Porting Projects to .NET 5
Immo Landwerth
 
PPTX
O futuro do .NET : O que eu preciso saber
Danilo Bordini
 
PPTX
Dive into .Net Core framework
ElifTech
 
PPTX
.Net Core 1.0 vs .NET Framework
Wyn B. Van Devanter
 
PPTX
What should you know about Net Core?
Damir Dobric
 
PPTX
Net core path by Ibon Landa
Plain Concepts
 
PPTX
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
PPTX
Academy PRO: .NET Core intro
Binary Studio
 
Raffaele Rialdi
CodeFest
 
.NET Core, ASP.NET Core Course, Session 1
Amin Mesbahi
 
Dot NET Core Interview Questions PDF By ScholarHat
Scholarhat
 
Intro to.net core 20170111
Christian Horsdal
 
The how-dare-you-call-me-an-idiot’s guide to the .NET Standard (NDC London 2017)
citizenmatt
 
Modern .NET Ecosystem
Andrei Marukovich
 
Dotnet on linux
Ebram Tharwat
 
Key Steps in Developing .NET Core Applications
Damir Dobric
 
Overview of the new .NET Core and .NET Platform Standard
Alex Thissen
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp
 
Porting Projects to .NET 5
Immo Landwerth
 
O futuro do .NET : O que eu preciso saber
Danilo Bordini
 
Dive into .Net Core framework
ElifTech
 
.Net Core 1.0 vs .NET Framework
Wyn B. Van Devanter
 
What should you know about Net Core?
Damir Dobric
 
Net core path by Ibon Landa
Plain Concepts
 
.NET Conf 2019 高雄場 - .NET Core 3.0
Jeff Chu
 
Academy PRO: .NET Core intro
Binary Studio
 
Ad

Recently uploaded (20)

PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Digital Circuits, important subject in CS
contactparinay1
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Ad

.net Core Blimey - Smart Devs UG

  • 2. This is Matt Ellis He works for Microsoft, and is a developer on the .NET Core team. This is not me.
  • 3. This is Matt Ellis He works for JetBrains, and is an interested amateur in .NET Core. This is me.
  • 4. What is .NET Core? New .NET stack - CLR + BCL Open Source Cross platform (eventually) Standalone -
 per-application installs Factored for modularity - “cloud optimised” Everything ships as NuGet packages, including the runtime Not finished…
  • 5. .NET Core != .NET Framework NOT a new version of the .NET Framework • .NET Framework is going nowhere • .NET Core is 5.0
 .NET Framework is 4.6 • .NET Core is a fork of the .NET Framework
 Code merged back to TFS • .NET Core is (currently) a strict subset of the .NET Framework • Missing pieces in .NET Core
 Windows: WinForms, WPF, COM, etc.
 Platform: AppDomains, Remoting, Reflection.Emit, etc. • Different constraints:
 Ship cycles, compatibility, system wide install
  • 6. Why? Multiple .NET stacks. Incompatibilities Portable Class Libraries
 not scalable Cross platform Independent release cycles
 Runtime, BCL, apps Nano Server Tidy up
 15 years of evolution
  • 8. Why? Multiple .NET stacks. Incompatibilities Portable Class Libraries
 not scalable Cross platform Independent release cycles
 Runtime, BCL, apps Nano Server Tidy up
 15 years of evolution
  • 10. How do I get it? NuGet
  • 11. How do I get it? DNX - Dot Net Execution Environment DNX maintained by asp.net team Stable builds on nuget.org
 Unstable on myget.org .NET Core, .NET Fx and ASP.NET teams maintain own .NET Core builds… dnvm install latest -r coreclr -u
  • 12. Build from source! How do I get it?
  • 14. .NET Native Alternative runtime • AOT compilation • Compiles all dependencies
 Tree shaking • Reflection? Via xml! • Windows Store apps only • Closed source • LLILC - LLVM based JIT/AOT (OSS)
  • 15. CoreCLR The new runtime.
  • 16. dotnet/coreclr JIT compiler (RyuJIT), Garbage Collector, Platform Abstraction Layer - C++ mscorlib (tightly coupled to runtime) - C# PAL - OS and platform differences. E.g. exception handling, threads, etc.
 P/Invoke to OS, FEATURE #ifdefs Book of the Runtime! Mirror back to TFS
  • 18. dotnet/corefx Factored for modularity - each solution/assembly is a package Some platform specific implementations, e.g. System.Console, Process.Interop.Unix.cs, etc. Might throw PlatformNotSupportedException
 (e.g. Console.get_ForegroundColor ) Build is based on project.json, packages as references Mirrored to TFS + .NET Framework High compatibility bar for changes, transparent API review process Console.get_ForegroundColor PlatformNotSupportedException
  • 19. AppModels Or: How do you run a .exe on Unix?
  • 20. How the application is hosted and run Environmental services What is an AppModel? Bootstrap the CLR Execute the application
  • 21. .NET Framework AppModels .NET .exe Originally a native stub that loaded the CLR (x86 only!) Special cased by OS loader since Windows XP Loads mscoree.dll, which initialises CLR and executes app IIS/asp.net Pre-IIS 7 - ISAPI filter IIS 7 directly integrates CLR Pipes requests/responses to managed code Lifetime management Windows Phone / Windows Store Magic! “Application host” loads CLR Integrates with environment events. E.g. suspend and resume applications Pre-compiled / .NET Native
  • 22. corerun DNX - .NET Execution Environment (asp.net) Windows 10 UWP Applications .NET Core AppModels coreconsole / osxcorebundlerun
  • 23. DNX Dot NET Execution Environment asp.net 5 Targets .NET Core /
 .NET Framework / Mono In memory compilation via Roslyn Changes project system
 Reference packages, not assemblies More…
  • 24. • Packages for runtime and BCL • BCL factored into many packages • NuGet at heart of project system (DNX) • NuGet is the new Portable Class Library • Sketchy documentation… NuGet v3 Bleeding edge.
  • 25. How does this affect us? Let NuGet be NuGet Don’t target a framework Add NuGet dependencies for all BCL assemblies Specify required versions of BCL assemblies
 Let NuGet sort it out Effectively, there is no longer a fixed framework version to target
  • 26. New Target Framework Monikers Brand new • dotnet - - .NET Core contracts. “Replaces” portable- . Use this!
 Supports .Net Framework 4.5 and later (inc. Xamarin) • dnx451 , dnx46 - DNX targeting .NET Framework 4.5.1, 4.6 • dnxcore50 - DNX targeting .NET Core • uap10.0 - .NET Core 5.0 on Windows. AKA 
 (UWP apps. Follows netcore45 / win8 , netcore451 / win81) dotnet dnx451 dnx46 dnxcore50 netcore50 netcore45 win8 netcore451 win81 uap10.0 portable-*
  • 27. Resolution depends on project type Project understands dotnet TFM: (UWP, .NET 4.6, ASP.NET 5) “Modern PCL” with project.json: (What is a “Modern PCL”?) More details on docs.nuget.org dotnet
  • 28. What About Compatibility? All .NET Core packages are PCLs. Kinda.
  • 29. PCL Refresher 1. A PCL is a class library that needs to run on multiple platforms and versions
 (e.g. .NET Framework, Windows Phone, Xamarin) 2. It defines a common subset of APIs that are available on ALL of the required versions of these platforms - a “Profile” 3. When targeting a Profile, the compiler references a set of Reference Assemblies
 These describe the API with empty types, and forward types to correct assemblies 4. At runtime, the real assemblies on the target platform implement the APIs
 Can also forward types to other assemblies
  • 30. Portable Class Libraries • PCL hides platform specific implementation details behind a common API contract • Profiles do not scale. The more versions and platforms, the more Profiles…
  • 31. Why is this important? Isn’t .NET Core a common, compatible, cross platform implementation? • The BCL is the Base Class Library. It’s low level, and has to worry about underlying platform differences, e.g. file IO • The BCL needs to be abstracted away from the platform, to allow for platform specific implementations. And refactoring!
  • 32. Reference Assemblies BCL packages include a Reference Assembly in ref • This is referenced at compile time and provides the contract for the API, just like PCL Reference Assemblies • The runtime implementation
 (e.g. libnetcore50 ) handles platform/host specifics ref libdnxcore50
  • 33. Why is this important? This is how compatibility works • Reference Assemblies allow consuming .NET Core packages from .NET Framework and other PCL platforms • Reference Assembly provides the contract, forwards any types • Implementation assemblies provide potential platform specific implementations
  • 34. Compatibility (not a guarantee) • .NET Framework 4.5 can consume .NET Core packages • .NET Core 5.0 is a subset of .NET Framework 4.6
 Should be able to consume .NET Framework 4.6 packages • .NET Core can consume PCL libs that are compatible with System.Runtime.dll (facade that forwards to e.g. mscorlib.dll) • A new PCL Profile will include .NET Core (e.g. )
 (Not announced as part of NuGet v3 - dotnet is checked before portable-* ?) portable-dotnet+…+…
  • 35. Known Unknowns • How are OS specific implementations going to be shipped? ( runtimes ?) • Do we need a Reference Assembly for each package? • Why do we need platform/host TFMs (e.g. dnxcore50 ) when we can specify dependencies? dnxcore50 runtimes http://docs.nuget.org/Create/uwp-create
  • 36. What does this mean for Mono? Lots. Or not much. Mono == .NET Framework Mono already cross platform Mono’s focus is non-Windows mobile (Xamarin) .NET Core’s focus is server and Windows UWP Mono can include CoreCLR + CoreFX code
  • 37. Where does Roslyn fit in? Orthogonal. Runs on .NET Framework + Mono Planned for
 .NET Core Compiling
 CoreCLR + CoreFX
 currently requires Windows C# compiler
 written in C#
  • 38. .NET Core Cross platform Open Source NuGet everywhere Bleeding edge Icons: http://icons8.com/ The future of .NET
  • 39. Links CoreCLR - https://www.github.com/dotnet/coreclr CoreFX - https://www.github.com/dotnet/corefx DNX - https://github.com/aspnet/Home NuGet - http://docs.nuget.org @citizenmatt