Modern .NET Ecosystem and .NET Core | Elias Spock | Skillshare

Playback Speed

  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Modern .NET Ecosystem and .NET Core

teacher avatar Elias Spock, Chance favors the prepared mind.

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

25 Lessons (1h 39m)
    • 1. Promo

    • 2. .NET Ecosystem Overview - Outline

    • 3. Classic .NET Platform

    • 4. Mono Platform

    • 5. .NET Core

    • 6. .NET Native

    • 7. Xamarin

    • 8. UWP

    • 9. Roslyn .NET Compiler

    • 10. NuGet

    • 11. Conclusion

    • 12. .NET Core - The Future of .NET - Outline

    • 13. Installation

    • 14. CLI

    • 15. Creating a Console App from VS

    • 16. Deployment in .NET Core

    • 17. UWP and .NET Core

    • 18. Cross Compiling

    • 19. PCL

    • 20. .NET Standard

    • 21. .NET Standard Use Case

    • 22. .NET Portability Analyzer

    • 23. Unit Testing in .NET Core

    • 24. Upcoming Features

    • 25. Conclusion

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels
  • Beg/Int level
  • Int/Adv level

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

Last years a great number of technologies came up to the world of .NET platform: nowadays we have the full (classic) .NET framework with CLR as a runtime, Mono with its own runtime, .NET Core with Core CLR, WinRT, UWP and Xamarin, a new JIT compiler RyuJit, .NET Standard, PCL, .Net Native, new Roslyn compiler with open API, NuGet based project management. God’s sake! It’s so simple to get lost in that ocean of technologies. You need to understand the overall picture to feel comfortable today. Didn’t you feel like a small fish in the ocean last time? Well, I did. I questioned myself, "what the hell is going on around me?" I didn’t quite understand the directions in which technologies develop. I didn’t know what to expect, what to learn next. In such a situation, you feel helpless. And what we are going to do in the course is that we’re going to eliminate this nasty feeling of being helpless by learning all the most important notions in the modern .NET platform.

Teaching Approach

No fluff, no ranting, no beating the air. I esteem your time. The course material is succinct, yet comprehensive. All important concepts are covered. For absolute beginners, I offer my help on Skype absolutely free if requested. Don't forget that this course has English subtitles, so if you don't understand my accent, feel free to turn them on.

Take this course and you will be satisfied.

Build a deep understanding of modern .NET concepts

If you go behind the modern .NET directions, then this course is for you. This course will bring a whole picture of what's going on nowadays in the world of .NET, so you'll understand what you can and what you can't achieve using specific technologies. This course is like a navigation map.

Content and Overview

The goal of this course is to reveal the whole picture of the .NET world. One of the most profound technologies is the new .NET Core platform, so learning it, is a second primary goal of this course.

Of course, all the way along we will discuss all the other technologies I mentioned above.

This course is built for all kind of C# developers who are interested in learning the .NET platform. This course is beneficial for juniors as well as for seniors who want to stay well-informed about modern .NET platform. I’m sure any student will find something interesting and useful in this course.  

The main prerequisite is to be familiar with development on the .NET platform in C#. That’s all you need. 

In short, the course covers the following topics:

  • Classic .net platform, it’s building blocks, the history of this platform

  • Mono platform, it’s building blocks. You’ll figure out if classic .NET and Mono are compatible. We will compare classic .NET framework and Mono platform  

  • .NET Core is the new cross-platform .NET platform. We will understand what’s different here comparing to other .NET platform and this platform means for the future of the .NET world platform  

  • .NET Native is an interesting ahead-of-time compilation technology. You’ll know that a form of .NET Native comes to .NET Core as well.  

  • Do you really understand what is UWP? How it is related to WinRT and what WinRT actually is?  

  • Roslyn as a compiler platform  

  • NuGet as a system of dependencies management

  • Installation of .NET Core

  • Command-Line Interface (CLI) of .NET Core

  • Deployment in .NET Core: SCD and FDD

  • The problem of cross-compiling

  • Portable Class Library (PCL)

  • .NET Standard

  • .NET Portability Analyzer

  • Unit-Testing in .NET Core

  • Upcoming Changes quick overview

How long is this course: The course is around 2 hours. All are video lectures. You will be able to download all the slides and code samples used in the course.


Keywords related to the course:

  • .NET Core

  • C#.NET Core

  • .NET Standard

  • NuGet

  • Core CLR

  • .NET Ecosystem

Meet Your Teacher

Teacher Profile Image

Elias Spock

Chance favors the prepared mind.


I'm thankful enough for that I love what I do.
I began my career as a postgraduate student participating in Microsoft ImagineCup contest.
I've been working with .NET platform since 2003. I've been professionally architecting and implementing software for nearly 7 years, primarily based on the .NET platform. I'm passionate about building rich and powerful applications using modern technologies. 
I'm a certified specialist in Windows Applications and Service Communication Applications by Microsoft.
I'm one of the coordinators of the MSK.NET User Group in Moscow.

"If it's work, we try to do less. If it's art, we try to do more." - Seth Godin.

What I can say is that software is my art.

See full profile

Class Ratings

Expectations Met?
  • Exceeded!
  • Yes
  • Somewhat
  • Not really
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. Promo: Hi. Welcome to the course modern dot net Ecosystem and .net Court. I'm allies. Forfeit of a k n Junior Spark from engineers part dot com, and I'll be leading you through the course. I began my career as opposed. Grated Student participating in Microsoft Imagine Cup Contest I've been working with dot net blood from since 2003. I've been professionally architect ING and implementing software for nearly seven years. Primary based on dot net platform I am passionate about building reach and powerful applications using modern technologists. I'm a certified specialist in between those applications and service communication applications by Microsoft, last year's a great number of technologies came up to the world off dot nap. Nowadays we have the glasses dotnet framework with CLR s around Time Mona with its own round time dot net court with Gore CLR Win rt and you'd ABP exam Marine and Eugene Compiler G, that native new Roslyn compiler with open a guy dot net Standard PCL. You get based Project management God's sake. It's so simple to get lost in the ocean of technologies. You need to understand the overall picture to feel comfortable today. Didn't you feel like a small fish in the ocean. Last time I did, I questioned myself. What the hell is going on around me? I didn't quite understand the directions in which technologies developed. I didn't know what to expect. What to learn next? In such situation, you feel helpless, and what we're going to do in the course is that we're going to eliminate this nasty feeling by learning all the most important notions in the modern dot net ecosystem. One of the most profound technologists is the new dot net core platform, so learning it is a primary goal of this course. Of course, all the way long, we will discuss all the other technologists I mentioned above. In short, the course covers the following topics. Classic doesn't blood its building blocks the history of this platform Mona plant. It's building blocks will figure out if classic dot net and moan are compatible. Will compare classic dotnet framework and monitor dot Net Core is the new cross platform daughter frame with. We will understand what's different here, comparing toe other daughter letters and what this platform means for the future. Off the darknet world dot net native is an interesting ahead of time comply, elation, technology. You'll know that a form of dot net native comes to the lead core as well. Do you really understand what is UW beat out is related to win rt and what Minarti actually is? We will look at Rosslyn as a compiler platform you get as a system of dependencies management learning dot net core. We will look at installation off the Net court command line into face of deployment in dot net core self contained deployment on framework of dependent. The problem off cross compiling portable class libraries. Doesn't that standard? Not not portability in alive unit fasting in Darkness court and a quick overview off upcoming changes. This course is built for all kind off see shop developers who are interested in learning the dot net ecosystem. This course he's been official for juniors as well as for seniors who want to stay well informed about modern dotnet consistent. I'm sure any student will find something interesting and useful in this course. Main prerequisite is to be familiar with development on the darknet blood for incision. That's all you need. Feel free to look at the court description. I am looking forward to seeing you inside the course general and start learning the modern dot net ecosystem and dot net core 2. .NET Ecosystem Overview - Outline: Hi. This is Engineer Spark from engineer sparked dot com, and we continue our tour into a modern .net world. It's apparent today that dot net core platform is the future off DOT net It is cross platform and brings a great number of improvements, improvements in performance, cold reusability and so on. In this module, we're going to look at how to install dot net core runtime with as decay. Learn how to use command line tooling off dot net core, create a dot net core console application and learn what deployment features we have in dot net core. Look at relationships between dot net Core and you WP learn what is cross compiling PCL and how to solve the problems they cannot solve. Find out what dot not standard actually ease and how to use it in different types of projects such as you WP classic .net Projects and Exam Marine. Learn how to analyze your code base for compatibility potential. Learn how to create unit test projects in dot Net Core and Lucas upcoming changes in dot net core. So let's begin our journey 3. Classic .NET Platform : in the earlier days of .net. I'm talking about 2002 or in 2003 the only thing we had was CLR common language. Runtime Blas BCL based class Library. What formed the classic dotnet framework? This is a classic full dot net platform, which is alive and very health. In our days, I realized that most if you understand the overall picture off what the old good dot net platform is, but the course will not be complete in case with Skip a brief look at the platform so lads determined the indispensable parts of the classic dot net platform. Let's begin with the top level because it is simpler to understand things in the order they flow from the development perspective. First Doctor Blood Firm provides the ability to write programs in different programming languages. The most popular R C shop, End of shop. No doubts how all the things work. At first we write a program, say, NC Shop. Then we take SC Shop compiler called CSC. We can manually compile our social program using the CSC dot T X C compiler program in a command line, C. A C does not generate machine dependent coat. Strictly speaking, it generates by it code and intermediate, low level language. We get dot XY or dot dll program as the output. Now. When we were on our program, the operating systems loader will in Stan she eight CLR and host our program. During the execution process, CLR relies on a jit compiler, which compiles the intermediate language I l or a missile in short, into the machine irritable language wants and zero. Simply speaking, CLR is the component, which is also responsible for checking references on now's for managing exceptions, mammary allocation, garbage collection and so on. This platform architecture allows writing programs in different languages, since all the programs will be, in the end, compiled into the same I'll language. By the way, Jit compiler is called just in time because it compiles requested by CLR byte code on an S needed basis. I said that C sharp compiler generates machine independent code, but there is a tricky point. The thing is that unfortunately, CLR itself is not independent from the operating system perspective. CLR is tightly coupled to Windows. That's why we can't achieve cross platform development with glasses dot net platform C sharp compiler generates machine independent code in a sense off CPU architectures X 86 or X 64 as well as in a sense of operating system independence. When we build a C sharp program, we can target both X 86 x 64 CPU architectures. But the seller itself is a restriction point from the cross platform development perspective. Off course by code by itself can be independent only if we explicitly do not bound our app to specific architecture or a specific OS by relying on specific features so by it, goat can be independent. But programming in C Shop with BCL we in 99% of cases will tie ourselves to the Windows operating system due to the fact that the vast majority off BCL AP eyes are implemented on top off native Windows a P I. From the historical perspective, we have the following versions off the classic dot net platform in 2005 who had the second version with Windows forms for desktop applications development, a speed up net for Web applications development and a T or dot net as a framework for working with data basis. The following three point over released in 2006 brought the super powerful frameworks WP Air for Desktop Applications Development, which replaced the old Irwin, forms W. C. F s, a super powerful framework for supporting the vast majority off networking scenarios in a unified way, so to speak. There were also workflow and card space. Workflow supports building business processes. This is a rarely used to, and we're not going to discuss it. In 2007 we got the integrated Queers language called Link You. It brings the power of functional programming to the dot net platform. Entity framework is the so called or Aram, or object relational mapping tool. It allows you to map DB tables to the object oriented entities written in, say, See Shop. The fourth version in 2010 brought peeling Q and TPL. The 1st 1 covers the parallel execution scenarios for computational tasks, which can be paralyzed. TPL is the part of the BCL, which supports easier multi threading programming. The core part of the TPL is the notion of a task which encapsulate a separate thread off execution that not always separate. The version 4.5 brought the supper off you WP applications and task based a sink model. We will talk about Universal Windows platform later. In this course, a sink model allows us to even more smoothly implement of the multi threaded code. It brought the new keyword to see shop a thing. After that there were 4.5 point 14.5 point 24.64 points, 6.1 and the last 14.6 point two off course. They brought a great number of features, but nowhere near significant. Comparing to previous releases of the platform, the only thing I want to add that 4.6 version brought Mut compiler. Called region. It is a faster jit compiler which sometimes gives up to 50% in performance. Unfortunately, region supports Onley X 64 CPUs and sometimes is actually slower than previous jit compilers. But most likely current problems will be fixed. It's also worth dimension that modern Windows operating system installations have a classic dotnet framework building. Let's sum up in the end. At the low level, we have three major components for granting languages compilers for that, languages and Iran time implemented as a virtual machine. Okay, let's talk a little bit about Mona Platform 4. Mono Platform: the other incarnation off dot net platform is the Mona Platform. Mona is built with the same architecture in mind. Mona implements its own around time, and it is cross platform. Mona implements its own compiler Foresee Shop, since the sea shop compiler from the classic dotnet framework could not deported easily. So the moment platform is the patter little development branch without any meaningful reuse of classic dot Net platform, it has its own around time. It's on compilers and its own BCL, a program written on Monarch and run on Linux. Mac OS Windows in the case off Windows Monica an around on Lee on X 86 CPU. In the end, CLR on windows can run assemblies compiled with Moana shop compiler and vice versa. Morning runtime can run assemblies compiled by a classic dot nancy shop compiler on any supported platform. In practice, we off course should consider the problem off portability because if you're ill called tries to rely on a specific features off a certain operating system which are not supported on the other operating system, it will fail in practice. The problem off interoperability between Mona and classic dot net is rare because most of the time you are the right all the cold on classic dot net or on Mona. Also, I would add that Mona nowadays supports all the sea shop six features. It implements almost the full counterpart of the classic .net BCL off course. It has some peculiarities, such as virtualization off the registry on Lenox and others. Mona doesn't re implement WP f WWF. It has a limited W C F and s p dot net 4.5 sup word Mona provides Gitic a sharp took based on genetic A plus for creating gross platform desktop applications. GK Plus or the Game Toolkit is a multi platform took it for creating graphical user interfaces offering a complete set off widgets. Gitic, a plus is suitable for projects ranging from small one off tools to complete application suites. Unfortunately, Mona doesn't provide the full power of classic dot that it doesn't have such a wide community is classic dot net does Gitic A shop is nowhere near WBF in power Mona see shop compiler doesn't in need so optimized goat s classic dot not special compiler does so in the perspective Off baby eyes and performance Power Classic don't not platform is much better for a long time. The world off dot net was comprised of classic the Net and moral, the two platforms. Somewhere in 2014 roughly speaking, Microsoft began to invest in tow, open source a lot off resources. 5. .NET Core: So now we have a no open source platform called dot net Core. Let's try to understand what it is. As in the previous platforms, the major components are on time class, library and languages and tooling dot net Core platform runtime is called Core CLR course. LR is a cross platform common land which run Time course. LR is empowered by a new Jit compiler called Region. Religion is an improved version off the old Jit compiler. In certain scenarios, it gives significant performance benefits. The BCL off dot net core is called core effects and it is also open. Source Core effects has very similar but no the same A P I as the a p I off BCL. So core effects is a separate set off a p I. There's an interesting relationship between core effects and course CLR. Most fundamental types, such as object and task, are implemented in the course LR package A society note. If you don't know what is a package treated s a dll until we reached the point where we will talk about packages. So course LR itself compiles into a single binary named system that private dot core lived ordeal L the same fundamental types. This object and task are defined in core effects as well. So how does this work under the hood? The thing is that there is a bridge between court of fax fundamental types and the same types from the course ill are. When we write a program under the dot net core, it looks like fundamental types reciting core effects. The fact is that these core effects types reference types from the course. He'll are, for example, the system dot runtime package to find in Korea. Fax declares the public names for types like system that object and system that string, thus from applications Point of view, these types believe in system dot Ron Tando. Deal L. However, system don't run time. Don't deal well defined in the core effects. Ripple forwards references ultimately to system the private dot Coralie don't deal well, so Cory Fax has a dependency on course. CLR the dot net core command line interface Seelye, in short, is a new foundational cross platform to chain for developing dot net core applications. It is foundational because it is the primary layer on which other higher level tools, such as integrated development environments ID's editors and build orchestrators can build on. It is also cross platform by default and has the same surface area on each of the supported platforms. This means that when you learn how to use the tooling, you can use it the same way from any off the supported platforms. We will look at it separately in this course right now dot net course Command Line Into Face offers an execution inter point for operating systems and provides developer services like compilation and package management. Dot net Core supports four cross platform snares, a Speedo Nedcor Web maps, commend line APS libraries and Universal Windows platform maps. He doesn't implement Windows Forms or WP f, which render the standard grief or desktop software on Windows. I mentioned that dot net core is comprised off a great number of packages, not a semblance. Who will look at what you get packages? How later in this course? For now, consider that it means that dot net core is modular, meaning that instead of Assam bliss, developers deal within you get packages. Thus, unlike classic dotnet framework, which is serves to using windows update dot net Core relies on its package manager to receive updates. So in this case, off dot net core, we can receive updates for different packages more frequently. Classic dotnet Framework Life Cycle is based on big releases. DOT net core is much more flexible. DOT net core 1.0 was released on 27 June 2016 along with Visual Studio 2015 Update three, which enables .net Court development. Current version is dot net core 1.1. This release brought supper off additional operating systems. By the way, check out the file I attached to this lecture and you'll find the least off supported operating systems. Also, it adds 1380 new AP eyes mostly implemented in core effects dot net core 1.1 supports .net standard 1.6. We haven't yet discussed what .net standard is. This topic is in fact so important that we will dedicate to its several lectures. For now, think of it s off a standardized set of AP eyes. The next one point to release is expected at spring in 2017 bringing dot net core toe parity with dotnet framer BCL and Mona BCL for a large collection of based types The thing is that dot net core 1.2 will implement the doctor that standard 2.0 version. 6. .NET Native: it's necessity to mention that compilation Fissures in the World Off the Net are not bound by jit compilers. In other compilation, technology is called ahead of Time or a OT inshore. The air T technology in the Darknet eco system is represented by dot net native. It allows to compile, bite gold into binary code and integrate any required dotnet framer components to produce a single file. Self contained executable, whose performance is closer to code written in native languages such as C Plus plus dot net native nowadays is available for applications written on the classic dotnet framework you WP APS and dot net core wraps. All the You WP applications built in release mode automatically go through the DOT net Native to Chain, which produces a single dot APP X binary file, which will be stored in the Microsoft store Core. RT is the dot net core runtime that is optimized for a roti scenarios. Core RT is an open source implementation off the dot net native technology. The main difference between DOT net native and core RT is that the former relies on the U. T C compiler the MSV C compiler back, and while there later currently uses a rou ge lilac. UTC is much more aggressive in optimizing the code than Rue Jean, Also in karate. Some components off the runtime have been cleanly re implemented in C shop. Rather, coarse CLR is based on C plus, plus heavily, so don't be confused. Ruijin Lilac is responsible for compiling inter binary and karate is the runtime, which can run the resulting binary code. We had a similar technology called and Jen at our disposal before dot Net native was introduced and Jim is nowhere near as beneficial as dot Net Native and Jen cannot produce executable so which are self contained and don't require an externally installed run time. He rather benefits, which come with dot net native up to 60. Performance improvement on called start up times up to 40% performance improvement on warm start up times less memory consumption off your app when compiled. Natively No dependencies on the desktop dot net Ron time installed on the system. Since your app is compiled natively, you get the performance benefits associated with native gold. Think C plus past performance. You can still take advantage off the industry leading See Shop of the B programming languages and the tools associated with them. You can continue to use the comprehensive and consistent programming model available with DOT net with extensive AP eyes to write business logic, building memory management and exception. Handling core rt. Easing you project and still in early development stage and require a lot more work to supper production applications. So if you're a user and not a contributor course CLR and Rosslyn off for you again, Course LR is the runtime, while Rosslyn is the sea shop and we become pile er. 7. Xamarin: Azam Marin arose from the Mona Platform as Amarin has its own runtime, which is based on Mona, so we often see that they're around times are written as this Zamarripa slash mono. The most important part of Samarinda from the dot net perspective is xamarin forms Osama, and that forms is roughly speaking, a library that allows you to build native applications for IOS, android and Windows using a single see shop code base. If you are familiar with WP F or You WP than Xamarin forms will look familiar to you as well, since it's based on Zamel and we'll write our called N C Sharp December and Forms allows us to write an application once and build it targeting IOS, android and windows so Zaman forms knows how to translate. See Shop called into specific platforms so visual elements of Zimmer informs, will look natively on IOS, Android and Windows December and technology is an interesting one, so I want to dive a little bit deeper into how things work under the hood. So at the lowest level, we have the Mona Runtime on top off Mona. We have examined on android and exam and got IOS these libraries allows us not only to write shared cold, but also dig into specific features off these platforms. On top, we have xamarin forms, which exposes unified types, which we can use to build share. And you I Let's great is Amarin application. I'll open visual studio. Then I'll go to file your project. If you installed Samarinda during the process official student installation, then you'll see the cross platform section within the visual C sharp section. You have seven different project templates here. Seems this course is more like an overview off the modern dot net ecosystem. I'm not going to discuss all the possible options for more information. Wait for my upcoming examine course. I'll pick the Sammer and Forms portable template. This template allows us to share code via so called P C. L's or portable class library. We will discuss a little bit later what it is and how it is related to dot Net standard. I'll wait for a visual studio. It's creating projects you can develop for IOS without Mac, so you will see this message. It says that you can develop for IOS with a remote Logan. I'll cancel this window and these window reveals what PCL is for now. I'll just say that the seals enable the sharing off gold between different platforms such as you WP and here you can set the minimum version your application needs to run and the maximum version on which you have tested your application. Be aware that you are declaring that your application should work on any version off Windows in the range from minimum version to target version. It is recommended to pick the most recent version as the target and perform testing on that version, I'll click. OK, I feel that default values aren't just fine. When we create a solution in visual studio through the exam and forms portable application template, we get the solution with six projects, one is for shared, called via PCL. You can see that it is marked exportable. One for Android, one for us and for you WP and the other two are for Windows 8.1 and Windows phone 8.1. As a side note, I want to say that Windows eight and 8.1, as well as Windows phone eight and 8.1 are definitely dad. Yes, there are plenty off devices on these platforms, but it will not take much time to observe the extinction off devices on these platforms. Eight and 8.1 versions are the dead ends. So starting a new project on Sam Marin, I would consider to avoid investing too much time into separate off these platforms. Okay, so what's going on during the compiling process? Inzamam Erin, Things go a little bit different in the case off Android and IOS. As you can see, we have separate projects for specific platforms. So, firstly, you need to understand that the resulting applications which can run on target platforms, are compiled from these corresponding projects. Android from Droid Project, IRS from Iris, and so on. When android app is compiling, see shop is compiling toe ill and the result will be packaged with Mona on time, including jit compiler, integrated unused glasses in the summer, and framework will be proud to make the resulting package smaller in size. The application Iran's side by side with android runtime and interacts with the native types via Java native interfaces. In the case off IOS, see shop will be ahead of time compiled toe arm assembler, language unused glasses will also be browned. The difference in the case off I us comparing to Android is clear in the case. Off fires there is no round time called generation with Jeter Apple dip located any kind off runtime called generation. The simplest thing happens in the case off Windows based projects. See Shop is compiled toe l and will be executed by the built in run time. By the way, in the case off you WP the application a little bit ahead of time. Compiled by dot net native in release mode. This is similar to what happens in the case off IOS. 8. UWP: you WP stands for Universal Windows Platform. It was first introduced in Windows 10 so there is no you WP in the earlier versions off Windows. The goal off this platform is to enable cross device development off course. We're talking about devices which run on Windows. Windows 10 Issue Might know can run on the vast majority of devices such as desktop machines, mobile phones, tablets, watches, virtual reality devices, such asshole lens and so on. You WP enables the opportunity to ride code ones targeting all the possible devices which run on Windows. Please notice that we're not talking here about cross platform development. In a sense, off different operating systems you WP is a Windows based technology. So what? Actually you WP is what is it comprised the front of the hood? The core? A few WP is the so called winner team, which stands for Windows Runtime, the predecessor off Windows Runtime was calm. If you look at Wikipedia, you'll see that calm is a binary interface standard for software components. Introduced by Microsoft in 1993 it is used to enable inter process communication and dynamic object creation in a large range of programming languages. Comb is the basis for several other Microsoft technologies and frameworks, including all the early automation browser helper object Activex. Come plus become the Windows Shell Derek Tax um, DF and Windows runtime. The essence of calm is a language neutral way off, implementing objects that can be used in environments different from the one in which they were created, even across mission boundaries. We know RT is implemented in C plus plus and is object oriented by its nature rather than old comb win rt forms and you set off low level AP eyes like we not be does unlike Win a p I based on Come we narrative stores ap I definitions in dot William defiles These files store metadata What enables the interoperability off winner tea with dot net platform. All the types off ruin rt used from C shop are projected into .net tops, so we easily used them in sea shop like usual .net objects. I said that the core off you WP is minority. Maybe it would be better to say that you WP is the extension off winner t you WP brings new AP eyes into play for comfort development off you WP APS, it's better to use at least visual Studio 2015. As I've already said When we build the release version off you WP program, we get the Doc EP X file, which contains native code, because the source code was compiled by dot net native. The technology we discussed a little bit earlier, You WP provides its own Zamel framework for building your eyes. So if you're familiar with WP f in its Zamel mark up, then it will not be so hard to build your eyes on you. WP with the same Zamel based approach at the same time, notice the W PF's M O framework is the different framework. They look similar, but they have a different set of features. WBF supports things which are not supported by UW P and vice versa. 9. Roslyn .NET Compiler : dot net compiler platform, better known by its code named Roslyn, is a set off open source compilers and called analysis AP Eyes foresee shop and visual basic .net languages from Microsoft. Yes, we discussed earlier in this course C sharp cold gets compiled by corresponding compiler CSC That XY I intentionally didn't say about Rosalind. To simplify things a bit, Brundtland replaced. See shop and we become filers. Rosalind now is built into visual studio and when we build, see shop off the B projects, they get compiled by Rosalind. The most important thing here to understand is why Microsoft invented Roslyn. Modern world off managed platforms brings a great power. At our tips, Dooling became an indispensable part of development process. Modern tools help us to detect mistakes we make in our code by it playing static analysis. They help us to performer. Factoring which make our called cleaner and so on and so on. Roslyn is the response for modern requirements. Not only Microsoft on their own needs, Roslyn, but the entire community does. Roslyn is the open source platform integrated into visual studio, which enables the easier development off Dooling. We can write our own re factoring and cold analysis, we don't need to wait for anyone. Rosslyn was built in a functional way, so it's a pair is easy to use and heart to misuse. Its downside of Rosslyn. We can say that it generates a great amount off memory traffic, since it allocates new objects because of immutable types on which of the core off Rosslyn is built upon the community. All the Raiders started to develop tools based on Rosalind. Check out the air brown dot net on did Hop. For example, you'll find the link I attached to this lecture. 10. NuGet: I decided to explain what you get is since many developers lived very long without this hand tool, we manually managed all the references to libraries and their dependencies before Newgate was introduced. So what is it you get? In essence, you get is a package manager which works with packages rather than a semblance you get is distributed s a visual studio extension, starting with visual Studio 22 wealth and you get come springs told by default and you get package is a file in a Z performance which contains one or more assemblies and information about them. It knows how they're dependent on each other and so on. Another interesting thing is that you get nowadays is not just a way off packaging assemblies in their dependencies. It's also a way off, centralized, storing off packages. We have new get dot org's side where all the packages are publicly available. In this fair handy you get packages are so popular that in case you're working on your own open source library, you should create and upload a corresponding you get package. Also, we will look at how to do that. Let's launch visual studio and look at how Newgate Package Manager works. There are two ways of dealing with new get packages via command line and graphical user interface provided by a visual studio plug in. Nowadays we rarely use command line, since the plugging with green is enough. Powerful though using their console is necessary if you want to work with packages without having a solution open and is required in cases where the package manager why does not provide a way to perform an operation. So toe open the package manager. I'll go to tools. You get package manager, and here you have three options. But the 1st 1 opens the command line where you can run, you get power shell commands. The 2nd 1 opens gree, and the 3rd 1 opens the settings Dialog. Let's run the gooey. We get a beautiful and simple interface for managing. You get packages. At first, look at the top left. We have four options here. Browse for browsing. You get packages installed toe work with already installed packages, updates to explore the available updates for packages which are already in use in the solution, and the last one is consolidate. There is a difference between updates and consolidate options. The update tab is geared to display packages, which have updates available while the consolidation tab is geared to display discrepancies between projects where both consumed the same You get package but are targeting different versions. So using consolidate, we can update the same packages to the same version across the whole solution. I want to Selig, Breaux's and I want to install. Then you'd himself dot Jason package. I'll click on it. But before installing, look at the right side. Part of her window has been opened, which displays the detailed information about this package and some options off installation in the upper box. We have a table where you can select projects off the solution to which you want to install the package. In this case, I want to install it to console application one. So I'll click on that a little bit below. You see the version we're going to install. Click on that and you'll see the drop box where you can select a particular version you want to install. Below this section. You have a section with additional settings to read about them. Look at the document attached to this lecture. Most of the time. You can stick with options chosen by default, so I'll click install. I see the preview window. I'll click OK, and I seeing the output window that everything was okay. Let's look at the project and we now have the packages dot com fig file. I'll open it, and here is what it is. It is an XML configuration file, which contains all the information about installed packages. In this case, we see that we have the Newton solved Jason Package as the dependency in the console application on project. I'll expand the references section, and we see that our package edit a corresponding Jason library. Using the same Greek to you can remove packages and so on. When I want to add about new good packages is that there is a tool for independent exploration of them. It is called New with Package Explorer. Not surprisingly, you can find it on the link I attached to this lecture. I have already installed it. You get Package Explorer is a click once and choke Ally Ity application that makes it easy to create and exploring. You get packages after installing it. You can double click on a dot on you pick E J file to view the package content, or you can load packages directly from you. Get feeds lag and you get dot org's Let's run it. We can explore existing packages as well as create new ones. Firstly, let's briefly look at how to explore an existing package. I'll open the Jason Leap. We see here all the package may at the data and package contents. It is a super detailed view. I just want you to know that such a tool exists by the way. I want to notice that you get can work with global new get repositories and dot net Core takes advantage of this feature, so the same you get packages are downloaded once, and then they can be reused in different applications. The second thing I want to do is to create our own package. For that, I'll go to file New. You can edit the metadata stored in the underlying gotten use pek file. I'll click the edit button and edit a couple fields. I have a library from which I want to create a package so I'll open the folder where my library it leaves. Then I'll Dragon drop it to the package explorer window. It asks me if I want to add a special folder for storing libraries and I'll click. Yes, since I want you get to keep things well organized, then I'll save what we did. And we see the open window where we need to point the target location where we want to save our new package with new picky GE extension. After that, assuming you can log in on you get that or you need to go to your account. There, down the page, you need to copy your A P I key. After that, we get back to Package Explorer and go to file publish here. I'll just based my A Paki, and I also will check the unleased option. Since my library is not very helpful in the end, you see that everything was done successfully. Let's get back to mine. You get account, I'll go here to manage my packages, and here you can see that we indeed successfully uploaded our package 11. Conclusion: in this module, we got acquainted with different platforms such as classic dot net framework, Monem Xamarin and dot net Core Classic dotnet framework is tightly coupled to Windows operating system. Zam Aaron, which is based on manga, is cross platform, but it also has its own Joe backs. Mona doesn't have such a huge supper from any giants like Microsoft. Despite some events like that Microsoft has bought Samarinda. Azam Aaron is a great platform, which is aimed at cross platform mobile development. Desktop and other scenarios are not covered. Dot net Core is a new, fast growing cross platform framework, which is not quite production ready yet, but apparently that dot net core is the future of the net. Today we have a whole new compilation platform called Roslyn, on top of which we can build great analyzing tools as a system of dependencies management. We now using you get infrastructure and you get package is a zip file, which contains assemblies and information about their dependencies. That was brief and at the same time enough broad introduction into the dark net ecosystem in which we're living nowadays. Let's get into the topic of dot net core, the future of the man 12. .NET Core - The Future of .NET - Outline: Hi. This is Engineer Spark from engineer sparked dot com, and we continue our tour into a modern .net world. It's apparent today that dot net core platform is the future off DOT net It is cross platform and brings a great number of improvements, improvements in performance, cold reusability and so on. In this module, we're going to look at how to install dot net core runtime with as decay. Learn how to use command line tooling off dot net core, create a dot net core console application and learn what deployment features we have in dot net core. Look at relationships between dot net Core and you WP learn what is cross compiling PCL and how to solve the problems they cannot solve. Find out what dot not standard actually ease and how to use it in different types of projects such as you WP classic .net Projects and Exam Marine. Learn how to analyze your code base for compatibility potential. Learn how to create unit test projects in dot Net Core and Lucas upcoming changes in dot net core. So let's begin our journey 13. Installation: dot net Core development on windows with visual studio requires at least Windows seven Service Park one Visual Studio 2015 Update three or later you get manager extension for a visual studio. There's a check box during installation off visual studio and not net core Tooling Prevue, too. At least I'm not going to discuss the installation process off visual studio. I just only want to mention that there is a free visual studio addition called visual studio community you can deluded by clicking the corresponding link attached to this lecture. After that, to be able to develop software with dot net core, we need to install dot net core as decay. I'll show you at the site. You can choose the operating system and available in Stoller. I am running on Windows so Islands told dot net core for Windows. I want to download the latest version off dot net core, which is 1.1, so I'll pick the current options on the left. And since we want to write our own code under dot net core not only to run dot net core programs, we need to select as decay option on the right as decay stands for software development kit , so it includes all the necessity development tools. The third option concerns their specific form of the installer. I wonder Net court to be integrated into visual studio, so I'll pick the visual studio 2015 Tools reviewed to I noticed that you also can do all the same things in Visual Studio 2017 which is currently under development. There is no in art inversion yet. There is a little star near the option. It says that we need to install the dot net core 1.1 around time separately in this case, so I'll deluded separately. In addition, I'll download the X 64 version. Seems my OS is off x 64 architecture. After that, I install the runtime at first and then the s decayed South. I'll skip this process. Seems it's Trouville and I will write it on it after installation. Let's check that everything works. Fine. First of all, just s remark. I want to notice that you will find the installed as decay in program files slash .net bath . I launched the developers command line, which comes along with visual studio. I'll type dot net command here and breast enter. If you see the correct output without any errors, it means that everything is fine and we can go further. 14. CLI: we will start our diving to dot net corn from the bottom. We installed both run time and tooling without tools. We can't create and manage any projects. In the end, off the previous lecture, we used the dot net command that was a command from within the dot net core CLI, where CLI stands for command line interface. It is a set off tools for building and managing dot net core projects. See, Ally is also cross platform. As you might guess, let's run their command line again and play around with .net entry point a little bit. First of all, remember that there is a help at your disposal, so you always can type these command. You can see here that we have seven sub commands, which belong to the dot net intra point. The last thing I want to say about help is that you can request help for their specific commands. Look at the command I'll issue. This is how you can read about specific commands. Okay, let's create a project based on dot net core. I'll use the new command specifying the type of project I want to create. At the moment. There are four types of projects available. Console actually creates a consul application. Web creates an a Speedo Net core project. Lieb creates a library which targets and that not not standard. We're going to learn what does not standard in greater details a little bit A later, however, Now I'll just say that .net standard defines the set off a P eyes, which have to be implemented by different .net platforms. So in then you get a cross platform library. The last option is for creating unit test projects. It is named X Unit test, and you can write unit tests in X Unit testing framework. But but there is also end unit runner in Alfa version so you can actually use and unit as well. Okay, I'll go to the specific folder on my local disk, and now I'll run. Then you command to create a simple console dot net core application. Let's look at the destination folder. You can see here to files program dot CS and project dot Jason. Let's open the program dot CS file in visual studio. Yes, you can see here. This is just a simple console application, which brings out the so familiar hello world string. I'll close this file. Let's look inside the dog, Jason file here. You can see that we have a Microsoft dot net core dot APP met a package off version one point. Open toe one s a dependency before we were on the application. We need to build it before building. We need to restore the packages our application depends on. So let's issue the dot net restore command. Very storing is done. Now we can either build or on our application since they Iran command checks. If the application was previously compiled, if it wasn't compiled, it will compile it and then Iran to run application. We need to issue the Iran Command. Great. The application is compiled and you can see that out. Hello, world. Let's get back to the application's folder. The restoring process didn't don't loot any packages into our applications folder. Instead, it generated a project dot lock dot Jason file. Let's open it with visual studio. You can see a full graph of dependencies dependencies, on which our project depends on dependencies, off dependencies and so on. This is possible because of global packages cash. We don't need to store all the packages inside project folders. Okay, I don't want to spend much time on dealing with dot Jason Project files. As you may remember, classic dot Net Platform works with Emma's build and dot CS Broach files to build projects . Visual studio developers had an idea to drop dot CS broach files and moved to dot Jason files. These resulted in a very strange situation when we work with both dot CS approach and dot Jason Project files. You'll see the idiotic situation around these during the course. But thanks to God's visuals due to, developers decided to get back toe old dot CS brahch files. So in the near future, you will forget about these dot Jason files and we'll live without the Spain. Let's get to the De Bock folder and look at what was generated by a compiler. Do you remember that we created a consul application? The interesting thing here is that we don't see any executable files how this is so The thing is that actually it is absolutely possible on Windows a deal. L can have an intra point, and nothing stops us from this approach 15. Creating a Console App from VS: the same thing we've done with Seelye Weaken do with visual studio at hand. Let's create a consul application in visual studio. I'll go to file new project here. I'll click on dot net core and now we see that we can create here three types of projects. They're all the same, except that we don't have the option here to create a union test project. I'll click on console application and created, as always, to build a solution. We can go to build build solution. Another thing I want to restate is that dot net core is based on packages heavily. Let's go to the section off references dot net core app Off version one means that the platform we target well, that's expanded. Microsoft dot net core dot app off one point open toe. One version is actually a matter package. Meta package is, in short, a set off packages which are very often used Together. I'll expand these meta package here you can see a great number of packages which are included to the higher level meta package. It doesn't mean that all these packages will be included in the result on the required packages will be cut off in the compiling stage in classic dot net platform. A council application would reference a huge monolithic MSK, or lib assembly, which contains a great number of AP eyes. Now we have a much more granular approach to managing dependencies. What I also wanted to emphasize is that when we build and run our solution inside visual studio, it actually uses see Ally tooling under the hood. It trance all those commands like restore, build, run and so on. This is very important to understand. Sometimes we need to write our own screams. So now you know how the things actually work and can write your own scripts if necessary. 16. Deployment in .NET Core: We have two types of deployment now with Dr Core F. D. D, which stands for Framework Dependent Deployment, and SC D, which stands for self contained deployment. When we rely on FDD, it means that our application does not include the runtime. So when we deploy our replication with FDD in mind, the target machine must have the brain stole run time. Otherwise, our application won't work. When we deploy our application going a CD way, we deliver the self contained application, which contains all the necessity things, including runtime so it doesn't need anything to run on any other machine. We can copy it anywhere and just run and everything will work fine. I'll open the command line and try to publish our console application in a release mode. To do this, I'll kick off a published command in the CLI with Dash C argument, which determines their configuration. Now let's open the release folder and located. What we have is just our deal. Well, with corresponding PDB and Jason Files, we don't have any around times here deployed. So this is how FDD deployment works. A city deployment is hard. First of all, let's edit the dog Jason Project file. I want to deploy the run time along with the program, so our program is not going to use the dot net core platform. That's why I'll remove the type equals platform line. Next, I'll make the runtime section to specify which ones I want to target. I attached the link to this lecture where you will find all the possible round time on identifiers. Now we need to run the arrest or command and then build our project for each run time. And now we need to make the last step to publish our project. Now let's open our projects folder and look at the results. As you can see, we have three different folders here, each for corresponding around time co p any of these folders to a target machine, and it will run without any problems, and it will not require any pre installed around times. For more details, follow the link I attached to these lecture 17. UWP and .NET Core: in this lecture, I want to touch some peculiarities related to using Dark Net core and you WP together before proceeding. I just want to notice that in order to create you WP applications, be sure that you haven't stole the universal Windows app development tools On this light, you can see what options you need to select during the installation process. Let's create a blank you WP application. I'll go to file new project, and here I'll click on Blank Universal Windows App. Let's get to the folder of the project. As you can see here we have two different project files. We have both Project Dodge a Salon Vile and dot CS Broach file. It appeared that DOT Jason was not sufficient for you. WP applications. This is kind off an idiotic situation right now, but as I said earlier in this course dot Jason, Project files will eventually go away and we will leave with dot CS brunch files. I want to add a couple of words about you WP APs so let's get back to visual studio. First of all, let's open the package dog Apax Manifest file. It contains a bunch off settings. I'll go to capabilities. Don't forget that in order to use specific features such as microphone or determining their location in you WP, you must explicitly select features your application is going to use here on the left side , you can see all the possible options. The second thing I want to note his concerns. The references. I'll expand the reference section off the project. Here you can see that we reference a matter package. Microsoft dot net Core Don't universal Windows Platform and also a universal windows as decay. You can explore them at a package using the tool I previously showed you, which is called You Get Package Explorer. It is very similar to what we've seen with the meta package referenced in a dark net core console application. Though you WP matter package is a super set off that dot net core mata package the 2nd 1 Universal Windows as decayed, represents a winner. Ts decay. Actually, it is a set off a P ice available across any Windows devices. If you need to use specific features, you can add a P I extensions. To do that, I'll go to add reference and you can see here that we now have a separate tab. Universal Windows. And here you can see two sub categories. Core and extensions. Core is always referenced. That is the universal windows as decay. Actually, let's switch to extensions. I'll scroll down a little bit. Here, you can see that. Additionally, you can add a P ice for I O. T devices, more wild devices, desktop extensions and so on. In the end, I want to add that you shouldn't forget that UW gaps are get compiled via dot net native toe dot app X files. In the next lecture, we're going to talk about cross compiling. This is a very important topic, which explains why we need dot that standard. After that, we will be talking about donuts standard itself. 18. Cross Compiling: in the early days of dot net, we had only one framework classic dot net framework with its own around time and BCL When we need to share some cold, we created a separate library which was comprised off dot CS Project and DOT says source files. Then we compiled it and as a result, we got a deal. L After some time, the other dotnet framework started to appear sometimes along with new devices. I'm talking about Windows Phone 88.1, Windows eight with its own capabilities as a marine and sold. So we needed to share cold between these different .net frameworks. The first approach we started to use for that purpose was to create a separate project for each target and link the same source files from the initial library. If everything was compatible, then we could just compiling you library and got in you deal L for a specific platform. However, that was a rare case, so we often needed to write some pre compile elation directives to use platform specific features. This approach is called cross compiling. There is a very unfortunate flow in this approach. The thing is that when we need to target many platforms. We end up in hell off keeping shared called compatible with all the platforms. Let's look at my favourite than the van framework on Get Hub. You can see here turns off dot CS broach files. This is because caliber in that micro is a very popular framework and the targets as many platforms as it can off course. This is a maintenance nightmare to simplify this a little bit, even a separate template in their superior called shared project. It allows simplifying shared source files between different projects. But of course, this is not a solution to such a problem. This is how PC else came into play. 19. PCL: PCL is not a real solution for the problem we were talking about in the previous lecture. What PCL enables is that with the sale, we can explicitly target platforms for which we want to build a shared library. We don't need to create terms of projects just for the sake of targeting different platforms. Even if our shared goal doesn't contain any platform specific features you've seen previously how we can create a PCL. So I'm not going to show you again how to create a PCL. So why PCL is not a real solution for the cross compilation problem. The first thing is that when we need to target and you platform, we need to re compile the PCL. Most likely targeting in your platform will force us to change the shared code base. Since it will not be compatible with the new platform, we will need to add if statements or two is a pre compilation technique relying on if deaths. Moreover, we need to understand the intersection off targeted platforms on Lee. This way we can write gold which is compatible with all the platforms we target with PCL. This is, of course, the maintenance help as we saw in the previous example, nothing has changed significantly. Don't that standard is the solution for the problem. Let's get to the next lecture and find out what does that standard. Actually, he's 20. .NET Standard: dot net standard is the logical evolution off PC Els. Think of that that standard essay Reverted PCL. Consider this with the sale, we target different platforms with which we asked. Developers should guarantee the compatibility, and we must know all the possible valid AP I intersections off targeted platforms we don't That standard is a well standard. It defines a set off a P eyes, which has to be implemented by different platforms. The relationships between shared code and blood firms are averted. Now we don't need to understand all the possible intersections of different platforms. All we need is to understand what platforms we want to suffered and choose the right standard and target on Lee the standard off a certain version, not different platforms Once a written library doesn't need to be re compiled. In the case of New Framer, X appearance projects under new frameworks will just consume adult that standard library. If that framework supports the corresponding version of a standard, of course, let's look at a table of compatibility between .net standard and the different platforms. Here we have a table of compatibility. I want you to understand it at the very top We have a row off .net standard versions starting from 1.0, it ends with version two point. Oh, at first you must understand that the lower version we target writing a dot net standard library the less AP eyes we have at our disposal, and the more platform will be compatible with our library. For example, if we target .net standard 1.0, then all the possible platforms will be able to consume our library, including dot net core dotnet framework, monos legs hammering GWB windows and so on. If we target 1.1 version that all platforms will be able to consume our library except windows phone silver light, it doesn't separate all the available A b I's in darkness standard 1.1. There is a strange thing with a 4.6 point one and 4.6 point two versions off the net framework. As you can see, the latest dot in that standard two point, which is not released yet, is implemented by 4.6 point one version rather than four points explained to don't pay too much attention to eat. Just remember that nowadays, 4.6 point one has the highest adoption off .net standard two point. Oh, considering that Windows 88.1 Windows phone eight and 8.1 windows phone off older versions are just dead. They're in a dead end. We can conclude that the most attractive version off the net standard to target now is the 1.4 version, since it is implemented by all actively developing platforms again, here is a cheat sheet. If you only want to support IOS and Android, you can use .net standard 1.6 in practice, though most features are currently available at dot net standard 1.3 end up. If you want to suffer IOS, Android and you WP then don't standard 1.4 is the highest you can use if you want to suffered windows, phone app 8.1 and Windows 8.1, then don't. That standard 1.2 is your target. If you are still supporting Windows eight dot not standard, 1.1 is for you. Finally, if you need to separate windows, phone eight Silverlight, then don't not standard one point. Oh, is your only option dot Net standard to Brando will be released somewhere in the first quarter off 2017. And as developers promise, it will be on par with BCL off classic dotnet framework. They will not become the same thing, of course, but it means that dotnet standard two point no will give us a great number of 80 ice. It's hard to say when other platforms will implement darkness. Standard to Pando version. We already know that .net standard, too. We'll include XML AP Ice Serialization AP Eyes networking, Io threading and all the core AP I, such as collections, reflections, interrupt and link you. This is really great. You might be wondering, How don't that stander works from the programming perspective? David Fowler wrote a simple yet good example. Let's go to get hub and look at the explanation off. How does that standard works From the programming perspective? Here we have a bunch of interfaces. I not standard 10 for 1.0, I under standard 1.1, which extends the Erler standard so these interfaces are built on top of each other. Each one contains all the features off president interfaces or standards. After that, we have blood firms which implemented that interfaces or standards in addition, they can expose their own. Specifically be eyes. You can see this on the example off you WP platform, which exposes GPS and Zamel features. I'll scroll a little bit down here. We can see that a library which targets a specific doubt, not standard, can access only corresponding AP ICE. It is constrained by that standard or an interface, so to speak. And one more thing. PC Els and darkness standard are compatible off course. Not directly, but there is a mapping between the so called PCL profiles and darkness standard versions. Let's look at a special mapping table here. You can see that if you're PCL is configured to target dot net framework 4.5 point one and Windows 8.1, it uses Profile 44. It means that it is compatible with .net standard 1.2. Finally, I also want to notice that .net standard libraries can have three types of dependencies bacon reference. Other don't not standard libraries, which target the same or lower version of a standard portable class libraries to figure out if a PCL can be referenced, you need to look at PCL to dot not standard mapping. We talked about a minute ago, starting with .net Standard 2.0, don't not. Standard leaps can reference classic dotnet libraries, and it will be possible through special Sheen's. There will also be some compatibility considerations as well as in the case with BC else, but presumably the compatibility capabilities will be very high. 21. .NET Standard Use Case: I want to show a strange thing which currently is happening when you work with .net standard libraries. At first, let's go and create a dot net standard library through the corresponding project template in visual studio. I'll go to file new project dot net core and choose class Library Underdog Net core. I'll name it Shared Standard Leap. Great. We created a standard library. If you look inside, project that Jason file, you'll see that by default, it targets the dot net standard version 1.6. Okay, fine. Let's look at the folder of this project. I'll open it up, and what you can see here is that we have to project files dot Jason on dot Exe, brahch. Now let's create a you WP application and try to read the reference to these .net standard library. Let's get back to visual studio. I'll go to add new project windows and choose a blank universal windows app. I'll name it Super you WP Now I want to reference the class library. I'll go to add reference, select the standard library and click OK Oops, it can be added. The thing is that you WP project is managed via dot CS brahch, which is not compatible with the current project management system off the darkness Standard library. But we can do a little trick to overcome this problem. Let's create a PCL. I'll go to add new Project Windows Portable Class Library. I'll name it portable standard Leib. We want to target here you WP and nsp dot net core one point. Oh, great. Now I'll go to Projects Properties and here we have a feature which allows us to target dot not standard. I'll click on that Super. Let's build the project. Now let's open the Projects folder here. You can see now that we have a dot CS broach file for managing this project. Let's get back to visual studio. I'll go to add reference and select the newly created portable standard. Now, if I expend references, we can see that our library, which targets don't not standard 1.3, is referenced. The only thing we need to do also is to remove the dependency on portable dot compatibility matter package. To do that, I'll go to project that Jason and remove the line, which states the dependency on Microsoft dot Of course, not portable dot compatibility matter package. Now I want to compile it. The portable meta package is gone. I need to update met a package in your WP project. So I'll go to him. You get package manager and updated. Great. Now you can add December and project and other reference to Standard library from the Android project, for example. Okay, Lets play around with the darkness. Standard version. I'll go to property self dot net standard library project and try to change their version. We knew the references section to be expanded. Look, there is a special icon around a reference to Standard Library has appeared. This is because you WP is not compatible with dot net standard higher than one point for version. So we need to downgrade the version to be able to reference it in a you WP project off course. All this stuff looks like a hell. And the pain in this and it actually is This is insane. But calm down, please. In the first quarter, in 2017 this idiotic situation will be fixed 22. .NET Portability Analyzer: portability becomes an indispensable characteristic off the code base, especially because off modern cross platform movement in the world off dot net, a great amount of code has been written before appearing off the net core and darkness standard. So the problem off analyzing the degree off court portability becomes important. Sometimes we need to understand how difficult it will be for us to pour to the code base. Let's play around a little bit with this tool. Let's go and install the dot net portability Analyzer plugging for visual studio. Now I'll open one of my solutions. I have opened a solution where I have to portable class libraries before analysing it. Let's look at dot net portability analyzer settings, so I'll right click on any project and click on Portability Analyzer settings Menu item. First of all, you can get the results off analysis in three different formats, including Jason, Html and Excel. I want to just look at errors in the output window in visual studio so Al and check these options Target blood firms is the least of platforms against which we want to perform portability analysis. I want my lips to be compatible with dot Net core. 1.1 dot net framework 4.6 point one dot net standard 1.4 Mona 4.5 You WP and a Semmering, Android and IOS. I'll click OK, and let's begin with analysis off a super simple library, which allows building your eyes. I'll start the analysis by going to analyze assembly portability and look, we have no errors in doubt between dough. This means that my library is 100% compatible with all the platforms with selected previously. Okay, let's check another PCL, which contains a lot of detail your objects and is responsible for serializing and the serializing them to and from Jason. Oh, it seems there is something wrong. It says that the Methodist serialize object is not supported in darkness standard 1.4 UW B and other platforms. So this is how portability analyzer works. You just select all the platforms you want to make her court compatible with and performed the analysis, then fix the problems in this particular case. Seemingly, I need to wait for darkness standard 2.0, and targeted, or I need to remove some of the blood forms I selected to perform the analysis Another way is to implement my own Jason's realize er on top of darkness. Standard 1.4 23. Unit Testing in .NET Core: Let's try to write a union best for a standard library in the Solution Explorer. You can see that I've prepared a darkness standard library through the PCL. Hack I've shown previously. Let's open the Solutions folder. Please notice that at the root level I have the SRC folder. You'll see why I created this structure a little bit later. Visual Studio doesn't have a separate project template for unit tests, so let's go and create a unit test project via Seelye Tools before creating a union test project. We need to create a special folder named Test, so I'll issue the following command. Then I'll go to the newly created folder to get a meaningful name off a testing project. It's better to create a separate folder, Then, to create a unit test project. I'll kick off the following command. After that, we clearly need to run the Restore Command. We can run our tests from the console by issuing the dot net test command Off course. We don't want to run tests from the command line. Let's go to visual studio and at our testing project to the solution. I'll go to add existing project and add a testing project via project dot Jason file. Cool. Let's go to project that Jason file and look at what is happening there. You can see here that you have the dot net test X unit package s a dependency. This is a special adapter which enables a running off unit tests. If you want to run and unit tests, then you need to install the dot in a test and unit dash preview version package. If you want to run them as test, then you need to install dot net estimates test preview version package the same way the stronger option is also should be changed correspondingly in the case often unit or M s test. Let's reference our library, which we're going to test. Say I want to write a unit test for the quest I have in my darkness standard library. Okay, now I want to run my test, so I'll open up a test Explorer window and run them everything passes. Remember that with dot net core. We need to have SRC and test folders side by side. This is a requirement for running tests 24. Upcoming Features: in the quarter one in 2017 we will see that explore AJ Project Jason will be replaced with dot CS. Broach with Emma's build and was built by the way is also will be a cross platform building system. Some improvements to dot net core are also expectable after removing dot explosion Project Jason Approach. It will be possible toe automatically migrate old projects just by opening it in updated version off visual studio All the new features off dot net languages will be available on all .net blood firms In shirt, We will see the following features functional programming concepts to dotnet languages, such a Stupples and better in matching performance and cold quality value tasks. Referent Torrance throw expressions by Larry Literal digits separators, developer productivity, out variables and local functions. These features We will be available in C sharp seven. Somewhere near the second quarter, we will see the release off .net standard 2.0 wishes I already mentioned will bring .net standard on par with BCL in classic dot net Framework. Seelye Tooling will also be improving constantly the schedule for entity framework or is in sync way that dot net core and a Speedo Net core schedule, which you'll find by navigating through a link I attached to this lecture. Somewhere near the second quarter, we will see the release off Visual Studio 2017. Visual Studio 2017 provides better debugging experience with round to click feature. It means that we will be able to click on a special button appearing around cold lines, and the bugger will around the code until the line we clicked on More Life called analysis features more a factoring out of the box better and navigation experience. Smarter intelligence. Now we will be able to filter the least by methods, properties and so on. It's very neat. Live unit testing A trans unit tests automatically when it sees that we changed Dependent production code. Removing and sorting off's M o name spaces. Better installation off visual studio itself. Now visual studio requires significantly less space on your disk, improved performance and many other things 25. Conclusion: in this module. We looked at the installation process, which is fairly trivial. After that, we got our hands dirty by playing with CLI Command Line interface off dot net core. It allows us to great projects, build and round them. We created a console application and deployed it successfully In the deployment lecture. We found out that there are now two major ways of deployment as CD self contained deployment and FDD framework dependent deployment. You learned the problems related to cross compiling and PC else, which actually didn't solve any problems. They just buried them a little bit deeper. After that, you learned what does that standard is? How it solves the problem of cross compilation. Douglas Standard defines an A P I said, which has to be implemented by platforms which want to be compliant with the standard and the particular version of the standard. You learned what is the current state of dotnet standard and what is the future of this standard in the first or second quarter? In 2017 the version 2.0 off the standard will be released, which will bring it on par with classic .net BCL. Separately, you learned how to use .net Portability analyzer to make your code compatible with different platforms, you learned how to create a unit testing project. There are some problems related to dot net core like dot Jason and dot explosion Project management approaches. There is no white suffered off unit testing frameworks and so on. But as I said earlier dot Net core is a child. It doesn't mean that it is weak. Maybe at this point, yes, but it's growing very fast Now. You're aware off all the measure directions in which dot net ecosystem develops and you will not drown in all the different terms and acronyms. Now you should feel confident regarding all the modern concepts in the Darknet world. I hope you enjoyed the course. See you later. Bye.