Scott Hanselman

What .NET Developers ought to know to start in 2017

January 11, 2017 Comment on this post [74] Posted in Musings
Sponsored By

.NET ComponentsMany many years ago I wrote a blog post about what .NET Developers ought to know. Unfortunately what was just a list of questions was abused by recruiters and others who used it as a harsh litmus test.

There's a lot going on in the .NET space so I thought it would be nice to update with a gentler list that could be used as a study guide and glossary. Jon Galloway and I sat down and put together this list of terms and resources.

Your first reaction might be "wow that's a lot of stuff, .NET sucks!" Most platforms have similar glossaries or barriers to entry. There's TLAs (three letter acronyms) in every language and computer ecosystems. Don't get overwhelmed, start with Need To Know and move slowly forward. Also, remember YOU decide when you want to draw the line. You don't need to know everything. Just know that every layer and label has something underneath it and the whatever program you're dealing with may be in a level you have yet to dig into.

Draw a line under the stuff you need to know. Know that, and know you can look the other stuff up.  Some of us want the details – the internals. Others don't. You may learn from the Metal Up or from the Glass Back. Know your style, and revel in it.

First, you can start learning .NET and C# online at https://dot.net. You can learn F# online here http://www.tryfsharp.org. Both sites let you write code without downloading anything. You just work in your browser.

When you're ready, get .NET Core and Visual Studio Code at https://dot.net and start reading! 

Need To Know

  • What's .NET? .NET has some number of key components. We'll start with runtimes and languages.
  • Here are the three main runtimes:
    • .NET Framework - The .NET framework helps you create mobile, desktop, and web applications that run on Windows PCs, devices and servers.
    • .NET Core - .NET Core gives you a fast and modular platform for creating server applications that run on Windows, Linux and Mac.
    • Mono for Xamarin - Xamarin brings .NET to iOS and Android, reusing skills and code while getting access to the native APIs and performance. Mono is an open source .NET that was created before Xamarin and Microsoft joined together. Mono will support the .NET Standard as another great .NET runtime that is open source and flexible. You'll also find Mono in the Unity game development environment.
  • Here are the main languages:
    • C# is simple, powerful, type-safe, and object-oriented while retaining the expressiveness and elegance of C-style languages. Anyone familiar with C and similar languages will find few problems in adapting to C#. Check out the C# Guide to learn more about C# or try it in your browser at https://dot.net
    • F# is a cross-platform, functional-first programming language that also supports traditional object-oriented and imperative programming. Check out the F# Guide to learn more about F# or try it in your browser at http://www.tryfsharp.org 
    • Visual Basic is an easy language to learn that you can use to build a variety of applications that run on .NET. I started with VB many years ago.
  • Where do I start?
  • After runtimes and languages, there's platforms and frameworks.
    • Frameworks define the APIs you can use. There's the .NET 4.6 Framework, the .NET Standard, etc. Sometimes you'll refer to them by name, or in code and configuration files as a TFM (see below)
    • Platform (in the context of .NET) - Windows, Linux, Mac, Android, iOS, etc. This also includes Bitness, so x86 Windows is not x64 Windows. Each Linux distro is its own platform today as well.
  • TFMs (Target Framework Moniker) - A moniker (string) that lets you refer to target framework + version combinations. For example, net462 (.NET 4.6.2), net35 (.NET 3.5), uap (Universal Windows Platform). For more information, see this blog post. Choosing a TFM decides which APIs are available to you, and which frameworks your code can run on.
  • NuGet - NuGet is the package manager for the Microsoft development platform including .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by all package authors and consumers.
  • What's an Assembly? - An assembly is typically a DLL or EXE containing compiled code. Assemblies are the building blocks of .NET Full Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions. In .NET Core, the building blocks are NuGet packages that contain assemblies PLUS additional metadata
  • .NET Standard or "netstandard" - The .NET Standard simplifies references between binary-compatible frameworks, allowing a single target framework to reference a combination of others. The .NET Standard Library is a formal specification of .NET APIs that are intended to be available on all .NET runtimes.
  • .NET Framework vs. .NET Core: The .NET Framework is for Windows apps and Windows systems, while the .NET Core is a smaller cross platform framework for server apps, console apps, web applications, and as a core runtime to build other systems from.

Should Know

    • CLR – The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
    • CoreCLR - .NET runtime, used by .NET Core.
    • Mono - .NET runtime, used by Xamarin and others.
    • CoreFX - .NET class libraries, used by .NET Core and to a degree by Mono via source sharing.
    • Roslyn - C# and Visual Basic compilers, used by most .NET platforms and tools. Exposes APIs for reading, writing and analyzing source code.
    • GC - .NET uses garbage collection to provide automatic memory management for programs. The GC operates on a lazy approach to memory management, preferring application throughput to the immediate collection of memory. To learn more about the .NET GC, check out Fundamentals of garbage collection (GC).
    • "Managed Code" - Managed code is just that: code whose execution is managed by a runtime like the CLR.
    • IL – Intermediate Language is the product of compilation of code written in high-level .NET languages. C# is Apples, IL is Apple Sauce, and the JIT and CLR makes Apple Juice. ;)
    • JIT – Just in Time Compiler. Takes IL and compiles it in preparation for running as native code.
    • Where is  .NET on disk? .NET Framework is at C:\Windows\Microsoft.NET and .NET Core is at C:\Program Files\dotnet. On Mac it usually ends up in /usr/local/share. Also .NET Core can also be bundled with an application and live under that application's directory as a self-contained application.
    • Shared Framework vs. Self Contained Apps - .NET Core can use a shared framework (shared by multiple apps on the same machine) or your app can be self-contained with its own copy. Sometimes you'll hear "xcopy-deployable / bin-deployable" which implies that the application is totally self-contained.
    • async and await– The async and await keywords generate IL that will free up a thread for long running (awaited) function calls (e.g. database queries or web service calls). This frees up system resources, so you aren't hogging memory, threads, etc. while you're waiting.
    • Portable Class Libraries -  These are "lowest common denominator" libraries that allow code sharing across platforms. Although PCLs are supported, package authors should support netstandard instead. The .NET Platform Standard is an evolution of PCLs and represents binary portability across platforms.
    • .NET Core is composed of the following parts:
      • A .NET runtime, which provides a type system, assembly loading, a garbage collector, native interop and other basic services.
      • A set of framework libraries, which provide primitive data types, app composition types and fundamental utilities.
      • A set of SDK tools and language compilers that enable the base developer experience, available in the .NET Core SDK.
      • The 'dotnet' app host, which is used to launch .NET Core apps. It selects the runtime and hosts the runtime, provides an assembly loading policy and launches the app. The same host is also used to launch SDK tools in much the same way.

    Nice To Know

      • GAC – The Global Assembly Cache is where the .NET full Framework on Windows stores shared libraries. You can list it out with "gacutil /l"  
      • Assembly Loading and Binding - In complex apps you can get into interesting scenarios around how Assemblies are loaded from disk
      • Profiling (memory usage, GC, etc.) - There's a lot of great tools you can use to measure – or profile – your C# and .NET Code. A lot of these tools are built into Visual Studio.
      • LINQ - Language Integrated Query is a higher order way to query objects and databases in a declarative way
      • Common Type System and Common Language Specification define how objects are used and passed around in a way that makes them work everywhere .NET works, interoperable. The CLS is a subset that the CTS builds on.
      • .NET Native - One day you'll be able to compile to native code rather than compiling to Intermediate Language.
      • .NET Roadmap - Here's what Microsoft is planning for .NET for 2017
      • "Modern" C# 7 – C# itself has new features every year or so. The latest version is C# 7 and has lots of cool features worth looking at.
      • Reactive Extensions - "The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators." You can create sophisticated event-based programs that work cleanly and asynchronously by applying LINQ-style operators to data streams.

      NOTE: Some text was taken from Wikipedia's respective articles on each topic, edited for brevity. Creative Commons Attribution-ShareAlike 3.0. Some text was taken directly from the excellent .NET docs. This post is a link blog and aggregate. Some of it is original thought, but much is not.


      Sponsor: Big thanks to Raygun! Join 40,000+ developers who monitor their apps with Raygun. Understand the root cause of errors, crashes and performance issues in your software applications. Installs in minutes, try it today!

      About Scott

      Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

      facebook twitter subscribe
      About   Newsletter
      Hosting By
      Hosted in an Azure App Service
      January 11, 2017 7:27
      A great list, but I'd certainly upgrad LINQ to a higher category. Having just that little bit of quasi-functional power makes C# so much easier to work with. Glad to see strong naming didn't make the list.
      January 11, 2017 7:50
      Great article!

      There is minor typo in Modern C# 7 bullet point: "cool features worth looking at"
      January 11, 2017 7:59
      Excellent List
      January 11, 2017 8:15
      Scott, do you think you can make a video explaining all these things here? For newbie dev like me, it would be good how/where it all interacts/relates with each other. I don't have that much experience in web, server, devices (my experiences is on microcontroller, robotics, embedded stuffs) so reading the stuffs here make me dizzy a bit. Would be great to hear from your experiences!

      Anyway, great list. Thanks!
      January 11, 2017 8:27
      Any idea when we might see the first preview release of .NetStandard 2.0? That seems to really be the missing link to allow for shareable libraries between .NetFramework and .NetCore. I'm also anxiously awaiting .NetCore support for ARM/Raspberry Pi.
      January 11, 2017 8:32
      Looked at your old post, many of those questions I still could not answer properly. It is a good blog for preparing technical interview.
      Your latest post, I feel much more comfortable. At least 70-80% of the terms I know or at least knows the idea.
      January 11, 2017 8:43
      I like to see an option where VS just tells me where I am at TFM wise. I write code against the entire .NET 'verse and a meter just tells me where I'm at - a scale between the "smallest possible .NET" all the way up to "now you're just making things up"
      January 11, 2017 8:47
      Howdy Scott,

      No mention of the Reactive Extensions? Sad panda. Microsoft invented the technology almost ten years ago, adoption within the MSFT ecosystem is minuscule compared to the explosive growth outside of dotnet. Knowledge of Rx/observables is vital for developing performant mobile applications and reactive event/stream processing on the server side. The knowledge is timeless - like unit testing, once you learn it the concepts stay with you for life.

      - https://www.youtube.com/watch?v=DYEbUF4xs1Q
      - https://www.youtube.com/watch?v=5DZ8nC0ENdg
      January 11, 2017 8:57
      +1 on Reactive Extensions. It is a transformative technology and not enough people leverage it in the .NET ecosystem.
      January 11, 2017 10:29
      Great blog post! BTW "gacutil /list." does'nt work for me! Even under cmder I did where gacutil, I got not found.
      January 11, 2017 10:36
      I tried gacutil on Windows 10 Enterprise [version 10.0.14393].
      January 11, 2017 10:39
      Maher - Try it from a "Visual Studio Developer Command Prompt." It's in C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe or similar.

      Kent and Geoffrey - Good point, I'll add it!
      January 11, 2017 10:42
      While I applaud the promotion of F#, going about it by recommending tryfsharp is not going to get such good results.

      Indeed, the most frequently asked question on the F# forums is some variation of "Why doesn't tryfsharp work in my browser?" To which the answer is "Because the tryfsharp site uses Silverlight for its interactivity, meaning that it only works in browsers still supporting the old plug-in model, and with Silverlight installed."
      January 11, 2017 11:22
      Thank you Scott for the hint!
      January 11, 2017 11:55
      https://dotnetfiddle.net/ works for VB, F# and C#
      January 11, 2017 12:58
      Steve - What's your preferred browser based REPL? I think they are useful for early no-install learning.
      January 11, 2017 13:47
      Also wrote a post about skills needed for .net web developer: http://sikilinda.com/posts/so-you-want-to-be-a-dotnet-developer/
      January 11, 2017 15:21
      @ Steve Gilham

      The tryfsharp.org site doesn't work even if you have Silverlight installed (at least for me on a Mac). I know the F# advocates are keen on growing their community (and I know a few of them) so it's quite frustrating they haven't sorted this out.
      January 11, 2017 15:23
      Great article!

      I have sent this to all my teammates as "read asap :)"
      January 11, 2017 16:37
      What about .NET Memory model? For example this or that from MSDN
      January 11, 2017 17:57
      Is it worth clarifying the role of UWP apps in relation to .NET Full Framework and .NET Standard? When you say "The .NET Framework is for Windows apps and Windows systems" it omits the fact that UWP Windows Apps actually leverage .NET Core instead of Full Framework - surprising, since UWP apps were the first production-released consumers of .NET Core. Early graphics that you and Hunter showed included UWP apps in the ".NET Core" block (is there a good reason? Would love to learn if so.)

      In that same regard - "one day you'll be able to compile to native code rather than compiling to Intermediate Language."  UWP apps leverage that today, whether the AOT compilation happens in-store or built on-machine.

      Possible source/citation

        

      January 11, 2017 18:50
      Scott,

      thanks for the post. For a couple of days I am pondering how to introduce a 12-year boy old to programming. He has told me about his interest in robots and LEGO e.g.. However, I am uncertain what to suggest so that he is able to "play" a bit while learning to code in a language and framework that will help him in the future. It makes no sense to learn some 'proprietary' language for one toy...

      You might think about a post that covers "How to introduce your kid to the world of .NET with toys" or something... :)

      January 11, 2017 19:05
      No mention of WCF but you have WPF in there? Lolz. One of these is doa in the real world and it isn't WCF.
      January 11, 2017 19:15
      Your ".NET Roadmap" link goes to the .NET Core Roadmap.

      Is there an equivalent for the .NET Framework? Or are we all supposed to jump on the "core" bandwagon now?
      January 11, 2017 19:26
      Nice stuff!

      Hey Scott, there seems to always be a one day difference between the dates displayed on the homepage and the date shown in the corresponding post pages. (Jan 10 vs Jan 11 for this post, for instance)
      January 11, 2017 19:41
      Was searching for UWP stuff and came upon the term '.NET Foundation'. Ran back here to see what it was but it wasn't mentioned. Went to their web site (dotnetfoundation.org) and it's unclear if it is affiliated with Microsoft. (?)
      January 11, 2017 20:24
      I would add OWIN and the MVC pipeline/module/whatever the correct term for the middleware that OWIN enables in ASP.NET in the "Nice to know" section. It's important knowledge for web devs, but not everyone is a web dev.
      January 11, 2017 20:38
      Great article. Found a small but important typo:

      "https://dot.net is where to download .NET Core and Visual Studio Core"

      Should be Visual Studio *Code*?

      The download link to Visual Studio Code is also fairly well hidden - as someone who knows what it is I didn't expect to find it under https://www.microsoft.com/net/core#windowscmd
      January 11, 2017 21:10
      Useful article.
      I guess you have a typo at some point where you say Visual Studio Core, you probably meant Code.
      January 11, 2017 22:06
      There is an implicit contrast in your comments between C# and VB which doesn't really do modern VB justice. VB is equally powerful to C# and in reality both languages are easy to learn and both unlock the full potential of .NET.

      I think it is (or should be) a question of syntactic preference and not of capability. VB is a beautiful language and you are doing it and us no favors by choosing to break feature parity with C#. For instance, pattern matching was promised to be released in both languages (and it was in fact mentioned in early VB Roslyn previews) but so far, it's only in C# and time is running out. Xamarin/VB was also promised and would be immediately useful, as would .NET core support.

      Again - syntactic preference, not capability, should be the standard. Please don't de-emphasize this fantastic and successful language. It is worth the extra effort to keep both C# and VB as strong first-class citizens in the .NET ecosystem.
      January 11, 2017 22:16
      The term LINQ is really used now to cover the fluent pipelining of IEnumerables and as such is a really useful set of tools to know. Your description doesnt do it justice.

      The whole 'put sql directly in your code' syntax trick seems less used
      January 11, 2017 22:40
      very useful post!
      January 11, 2017 22:51
      I love the Nice to Know section. Thanks Scott!
      jo
      January 11, 2017 23:18
      Hi Scott, I really enjoy your .Net community stand up. You guys are really entertaining and share a lot of great information. But, I am also interested in mobile development with Xamarin. I realize Xamarin is probably still being integrated into the Microsoft collective. Any chance you could pass on a request to have a similar show for Xamarin in the future with a format similar to your show. I would be happy to watch you talk about Xamarin as well if you get the time :)
      January 11, 2017 23:20
      Is it correct the Console applications are missing in the first picture? May sound a bit dull, but for me they are live and kicking for deploying things in a docker container!
      January 12, 2017 0:04
      Scott,

      for F# you could link to https://repl.it/languages/fsharp which has a functional (pun intended) non-legacy REPL.

      You could also mention Suave – https://suave.io/ – spawn a web server with a single line of code. It can serve your JavaScript from F# source code with Fable – http://fable.io/.

      Holger Flick,

      you could introduce your son to Lego Mindstorms with F# https://bizmonger.wordpress.com/2016/02/27/using-f-to-power-a-lego-mindstorm/ – coded on Mono – a good runtime for server programming – with VSCode and Ionide.
      January 12, 2017 1:00
      Hi Scott,

      great list. Thumbs up. I would definitely add Entity Framework (Core) somewhere in that list. Sure there are other OR-Mappers around, but every dev should have basic knowledge of EF to be able to connect to a database like SQL Server.

      Thomas
      January 12, 2017 3:16
      IMO the picture is misleading in regards of ASP.NET Core, which is fully capable of running on top of .NET FRAMEWORK as well as .NET CORE. A more precise illustration was to move ASP.NET on top of both runtimes or make it a distinct box which overlaps both.

      Anyways, thanks for a nice post. Educational as always.
      January 12, 2017 6:03
      I second Entity Framework it is worth mentioning. It is key!!
      January 12, 2017 6:04
      Those C# 7 features are fire, fam! I had no idea any of those were coming. C# 6 was awesome and that's even more awesome. Tuples and Deconstruction are my favorite (Python anyone). Inner functions, expression destructors, etc. I can't wait!
      January 12, 2017 12:49
      Great article Scott!
      January 12, 2017 12:50
      Great job Scott!
      This is definitely my go-to article if I ever need to explain .NET to anybody.
      January 12, 2017 13:14
      I also wonder why WCF went out of fashion (especially because it doesn't seem to have a "modern" equivalent). It makes me wonder if this current list is aligned with the reality. Please consider that most of the developers/companies are not in "early adopter" category and the ASP.NET Core doesn't seem to be mature enough for enterprise level applications.
      January 12, 2017 15:46
      Scott & Jon, this is a great post.

      It gives the newbie a clear idea of .NET, while refreshing the .NET pro at the same time.

      My children would learn & produce things with .NET!
      January 12, 2017 16:12
      I'm sure this is going to be an unpopular opionion. But if you're going to learn a .net language, you shouldn't go with visual basic. C# has a lot bigger community, and it will be easier to get help. Features will always come to c# before it comes to vb (.net core, universal apps etc. etc.). There are a lot more jobs as well for c#. It just seems like vb is a dying language (I hope I'm wrong though), I think the difference will grow larger as well since now c# will be on a separate release schedule compared to vb.
      January 12, 2017 16:45
      Great article; however, I think you may have forgot one important language that will become more important as Xamarin Forms becomes more popular. XAML for Xamarin Forms. I have been learning it for the past few weeks and even though it looks easy, it takes sometime to learn.
      January 12, 2017 16:49
      As a "grizzly old green screener" (IBM RPG, iSeries) who has gone to the "dark side" by learning .NET, originally via ASNA's Visual RPG for .NET, I found this an excellent listing. Thanks for publishing it. I've bookmarked this blog page.
      January 12, 2017 17:05
      Great article, Scott. "Worthy of mention in the Jedi archives" ..
      January 12, 2017 18:04
      Ionut Ungureanu - WCF is still used in many large 'enterprise' applications, but less so in other contexts. SOAP is less and less used and replaced with lightweight protocols and technologies (REST-like web services on top of HTTP as an example)
      January 12, 2017 18:07
      And the only place I see javascript was in the comments and then only in relationship to other languages. So should I assume, I don't need javascript to write a web app in .NET? Hmmm
      January 12, 2017 19:27
      Love this post. Wish somebody wrote one for Javascript.
      January 12, 2017 20:39
      Great Article to have a quick reference on .NET. Thank you.
      January 13, 2017 11:14
      Thank you for the roundup Scott.

      To be honest, the point you make in "You don't need to know everything. Just know that every layer and label has something underneath it and the whatever program you're dealing with may be in a level you have yet to dig into." is difficult to digest.

      I started out working on WinForms while learning ASP in the background. I got an ASP job and I learned ASP.net (webforms and web apps) in the background. By the time I got an ASP.net job, there was WCF, ASP.net MVC and EF. I was comfortable with NHibernate so EF was not an uphill but in the last 1 year when I was confident of moving on to ASP.net MVC, there's this ASP.net core. It's not just ASP.net, it's the digging into IIS, Windows Server and IE 5,6,7,8,9's technical debt that has offered more friction in my technical aspirations.

      For one thing, I'm glad that I didn't go down the Winforms, WPF, Silverlight line.
      January 13, 2017 11:32
      Great article, CoreFX links to CoreCLR.
      January 13, 2017 11:40
      interactive http://www.tryfsharp.org/ site does not work for many browsers :( (especially edge)
      January 13, 2017 17:13
      I might be controversial here, but F#? Is it really a "must know"? I don't know anyone who uses it, I've had a look now and again - but can't really see myself using it.

      I'll admit I'm nowhere near an expert, why would say a C# developer ever use F#? Would you ever use them in the same app to achieve things the other language couldn't?
      January 13, 2017 20:19
      Great article Scott. I would argue that LINQ should be promoted to the "Should Know" category. I consider LINQ a core piece of the .NET world and something that every .NET developer should understand clearly. It's usefulness goes beyond just querying a database; the in-memory object and collection manipulation and querying capabilities are what really differentiate it from other languages/frameworks and give it a leg up.

      Thoughts?
      January 14, 2017 0:12
      3 .net frameworks. But what happend to .net micro framework? The dev blog is dead for a year. Also gone?

      F# must know? why MS gonna kill C# ?

      btw your diagram, like Pauli mentioned, is just wrong. See: https://docs.microsoft.com/en-us/aspnet/core/ You got it right in another article of yours.
      January 15, 2017 0:38
      Did someone said UWP?? Ah, of course not. Don't spend your time for deadborn framework.
      January 15, 2017 1:51
      It would be great if TPL DataFlow got a mention; it's one of the most fantastic libraries that no one has heard of. That and Microsoft Bond.
      January 15, 2017 2:58
      +1 to the commenter who suggested that LINQ should be promoted to at least "Should Know."
      January 16, 2017 6:39
      the most frequently asked question on the F# forums is some variation of "Why doesn't tryfsharp work in my browser?" To which the answer is "Because the tryfsharp site uses Silverlight for its interactivity, meaning that it only works in browsers still supporting the old plug-in model,
      January 16, 2017 14:19
      Someone mentioned the technical debt of using IE. Couldn't agree more. Edge is such a joke, I remember supporting it while doing IT and there was endless ways for users to make it break.
      January 16, 2017 15:58
      I absolutely could not disagree more, this list basically reduces "Learning .NET" to a glossary, and knowing the terms and knowing the concepts are two very different things. - one of those will help when you work, one will help when the recruiters ask questions they found in this list.

      I don't have a better list, nor would I want to try and make one, but knowing everything on this list probably doesnt make you a better developer, and knowing barely anything on the list (it would be impossible to know nothing and still be a .NET developer, granted) doesnt make you a worse one.

      Obviously my above statement is about the .NET languages you dont use, stuff like intermediate language, garbagecollector, compiler ect... Useless trivia stuff for developers for most types of applications.

      -other things like Nuget, ASP.NET (Core), .NET Core and async/await ect are ofcourse essential, but also very hard to miss.
      January 18, 2017 16:02
      The list of three runtimes contains the following "Mono will support the .NET Standard as another great .NET runtime that ..."

      But ".NET Standard" is not one of the three runtimes that are listed. I know nobody can actually say what ".NET Standard" is, but I'm sure we can all agree it's not a runtime.

      Every attempt to explain .NET Core seems to require another explanation to explain the previous explanation.
      January 19, 2017 4:17
      Thanks Scott, such a brief and concise article to understand whole .Net science.
      January 19, 2017 11:20
      It is a nice post and thank you.

      "Mono for Xamarin" could be a little bit hard to understand, but I cannot find a better term either.

      I hope the beginners find it interesting to also read the short history page I maintain, http://corefx.strikingly.com/
      January 21, 2017 1:48
      The CoreFX link should lead to https://github.com/dotnet/corefx
      CoreRT (https://github.com/dotnet/corert) should probably be alongside .NET Native.

      It would be helpful if there was a big diagram of all of these things explaining their relationships visually... somehow
      January 23, 2017 2:49
      Scott's a busy guy or he just dont give a .. about out comments anymore.
      January 23, 2017 21:11
      Great summary! I agree with those suggesting LINQ deserves promotion to "should know". I think as common as it has become, it would be difficult to read and comprehend a large portion of the code out there without an understanding of LINQ, which as someone else mentioned, has I think for most become more about familiarity with the extensions in the System.Linq namespace than about the actual LINQ syntax.

      For those questioning F# as a "need to know", I believe Scott's point was not about needing to know F# (or VB for that matter), but rather about knowing what the basic Microsoft .NET language offerings included.
      January 25, 2017 12:59
      But even if you did know Xamarin and used it to build a super cool enterprise app, don't expect to be able to run on an Azure based VPN because Azure VPNs don't support iOS nor Android. Still!
      January 27, 2017 20:42
      Very nice article and very well documented. :)
      February 03, 2017 18:40
      Must read for .NET developers. Great article!

      Thank you :)
      February 07, 2017 9:03
      Showbox covers all the entertainment aspects which the users may need to get themselves amused and entertained. The app is packed with innovating design and breathtaking features that may provide the PC users lots of fun and enjoyment. ShowBox

      Comments are closed.

      Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.