Intro • Runtimes • Frameworks • Tooling • Compilers • Deployment .NET Core • Understanding .NET Standard • Versioning .NET Standard • Summary • Questions and answers Wrap up
Innovation Any app, any platform Openness .NET Core ASP.NET
.NET Framework .NET Core Next gen JIT (RyuJIT) SIMD Runtime Components Compilers Languages innovation .NET Compiler Platform .NET Core 1.0 Libraries .NET Framework 4.6 Libraries NuGet packages Xamarin
Runtimes • Cross-platform implementations of CoreCLR • CoreRT for AOT scenarios CoreFX libraries • Standards based BCL • Platform and OS abstractions • Delivered in NuGet packages • Shared Framework SDK • Command-line tools • Side by side installation • C# and F# • Driver dotnet.exe ASP.NET Core App Model Universal Windows Apps Model Any other app model CoreFX: Unified Base Class Library Runtime Adaption Layer .NET Native Other RuntimeCore CLR
.NET Core build tooling project.json xproj MSBuild tooling .csproj Migrate
.
frameworks TFMs Linux • Red Hat Enterprise Linux 7.2 • CentOS 7.1+ • Debian 8.2+ • Fedora 23 • Linux Mint 17.1, 18 • OpenSUSE 13.2, 42.1 • Oracle Linux 7.1 • Ubuntu 14.04 & 16.04 Mac OS X 10.11, 10.12 Windows • Windows 7+ / Server 2012 R2+ • Windows Nano Server TP5 • Windows Server Core • Windows Server 2016
#imports imports "osx.10.11-x64": { "#import": [ "osx.10.11", "osx.10.10-x64" ] }
• • • • • • • •
<ItemGroup> <DotNetCliToolReference Include="dotnet-sdklist"> <Version>0.1.0-*</Version> </DotNetCliToolReference> </ItemGroup>
. <PackageReference Include="Microsoft.NETCore.App"> <Version>1.0.1</Version> </PackageReference>
Host + CoreCLR Native code (x64, x86, ARM) RyuJIT LLILC* .NET assemblies IL code Source files (C#, F#) Roslyn CoreFX Visual Studio or MSBuild * = Experimental
Native code (x64, x86, ARM) RyuJIT LLILC* IL to C++* .NET Core app assemblies (IL code) Source files (C#, F#) Roslyn CoreFX CoreRT Visual Studio or MSBuild * = Experimental
2.0 1.6 1.5 1.4 1.3 1.2 1.1 1.0
.NET Framework .NET Core Next gen JIT (RyuJIT) SIMD Runtime Components Compilers Languages innovation .NET Compiler Platform .NET Core 1.0 Libraries .NET Framework 4.6 Libraries NuGet packages Xamarin
Primitives • Collections • Reflection • Interop • LinqCORE Threads • Thread Pool • TasksTHREADING Files • Compression • MMFIO Sockets • Http • Mail • WebSocketsNETWORKING BinaryFormatter • Data Contract • XMLSERIALIZATION XLinq • XML Document • XPath • Schema • XSLXML Abstractions • Provider Model • DataSetDATA Version #APIs Growth % 1.x 13,501 +1% 2.0 32,638 +142%
My Standard Library 1.x .NET Standard based library .NET Framework targeted library Portable Class Library .NET FRAMEWORK .NET CORE XAMARIN Via Portability Via Compatibility Shim Legend Application Type Is able to reference My Standard Library 2.x
1. 2. 3. 4. 5. 6.
.NET Core • Allows your applications to span multiple operating systems • Lightweight package-based and cloud/container optimized .NET Standard • Incremental specification of .NET API surface • Will make your class library portable to multiple .NET platforms Future • .NET Standard 2.0 provides a richer API surface and better migration story • Tooling and IDEs will catch up
Resources http://dot.net http://github.com/dotnet/ http://visualstudio.com https://docs.microsoft.com/en-us/ dotnet/articles/core/
Questions and Answers

Overview of the new .NET Core and .NET Platform Standard

Editor's Notes

  • #4 Innovation: Innovate and deliver much more faster Openness enriches the platform and the community On any device and platform
  • #7 Driver dotnet.exe is what the team calls the
  • #8 Key observations: .csproj is back New MSBuild implementation for .NET Core projects Definitions for: Targets: targeted .NET platforms and standards Dependencies: required assets from NuGet packages Runtimes: specific operating systems Command-line tooling .NET CLI: dotnet.exe and extensions
  • #10 NETStandard Library has a relation to .NET Standard specification, but is not same https://docs.microsoft.com/en-us/dotnet/articles/core/packages https://docs.microsoft.com/en-us/dotnet/articles/standard/library https://github.com/dotnet/standard/blob/master/docs/versions.md#mapping-pcl-profiles-to-net-standard
  • #12 https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog
  • #13 Framework dependent is also known as ‘Portable app’
  • #18 https://blogs.msdn.microsoft.com/dotnet/2016/09/13/announcing-september-2016-updates-for-net-core-1-0/
  • #20 https://github.com/dotnet/llilc https://github.com/dotnet/corert/blob/master/Documentation/how-to-build-and-run-ilcompiler-in-console-shell-prompt.md
  • #21 .NET Native does AOT compilation Targets CoreRT https://blogs.msdn.microsoft.com/alphageek/2016/10/13/native-compilation-why-jit-when-you-can-codegen/
  • #23 API surface defined in C#
  • #24 Doesn’t include application platforms Each PCL is targeting a specific set of platforms Not compatible with newer platforms Hard to understand compatibility relationships
  • #25 Projects targeting version X.Y can reference libraries & projects targeting any version between 1.0 and X.Y From that platform you can reference libraries up to that version
  • #29 https://github.com/dotnet/standard/tree/master/docs/netstandard-20 https://github.com/dotnet/standard/blob/master/docs/netstandard-20/packaging.md https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/
  • #32 https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/ http://www.michael-whelan.net/porting-dotnet-framework-library-to-dotnet-core/ https://blogs.msdn.microsoft.com/dotnet/2016/02/23/porting-msbuild-to-net-core/ https://packagesearch.azurewebsites.net/ https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/porting.md https://docs.microsoft.com/en-us/dotnet/articles/core/porting/libraries