Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

[WIP] Add .NET Primer #725

Closed
wants to merge 4 commits into from
Closed

[WIP] Add .NET Primer #725

wants to merge 4 commits into from

Conversation

richlander
Copy link
Member

I've started a ".NET Primer". It's intended as an approachable entry into learning about .NET, generally and about specific features. It's a nice complement to "Book of the Runtime", which is intended as a deep-dive for CoreCLR developers. The Primer is for any .NET developer.

This PR adds an initial set of (WIP) documents. I need your help in bringing the docs to quality and to add a bunch more. My intention is to make this document set expansive. It won't be MSDN, but will cover the key features of .NET. The docs should be conceptual in nature, contains lots of code samples, as appropriate, but not listing of APIs.

Please:

  • Provide feedback on my and (eventually) other folks' Primer commits.
  • Please contribute to the Primer chapters.
  • Please contribute additional Primer chapters.

I have a set of .NET conceptual documents in markdown already (from another project). If you want to add a Primer chapter on, say, value types, please tell me. I may have a document for you to start with (not that you have to use any of it, but it's good to check it out first). I will be proactively adding these documents as I can. The GC chapter is one such document.

I intend to work in the dotnet-primer branch until the documents have hit a minimum quality level. They are not there yet! I'll merge the documents into master at that time, and we'll keep on rinse-repeating. Please help.

@richlander richlander added the documentation Documentation bug or enhancement, does not impact product or test code label Apr 16, 2015
=========================

The .NET binary format is based on the Windows [PE file](http://en.wikipedia.org/wiki/Portable_Executable) format. In fact, .NET class libraries are conformant Windows PEs, and appear on first glance to be Windows dynamic link libraries (DLLs). This is a very useful characteristic on Windows, where they can masquerade as native DLLs and get some of the same treatment (e.g. OS load, PE tools).
CPU-agnostic and OS-agnostic. It is also fully specified and standardized. As a result, you can use class libraries within any application using any .NET implementation.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"CPU-agnostic and OS-agnostic." <- actual sentence missing here

@akoeplinger
Copy link
Member

I made a first pass through the doc and left some comments. Looks like a great summary of what makes .NET an awesome dev platform, thanks 👍

@richlander
Copy link
Member Author

Glad you like the primer, at least in concept. Lots of writing left to do. I suspect it will take a while to get all the key features adequately documented.

I wrote the initial version on a plane in a text editor, which explains the spelling mistakes and the bad C# syntax. Thanks for noticing all of that.

@richlander richlander force-pushed the dotnet-primer branch 2 times, most recently from 60ab41f to 13f811d Compare April 20, 2015 06:16
- Add .NET Primer Intro (WIP)
- Add Class libraries doc (WIP)
- Add Garbage Collection doc (WIP)
- Add Assembly format doc (WIP)

You choose a platform configuration when you create a portable library. These are the set of platforms that you need to support (e.g. .NET Framework 4.5+, Windows Phone 8.0+). The more platforms you opt to support, the fewer APIs and fewer platform assumptions you can make, the lowest common denominator. This characteristic can be confusing at first, since people often think "more is better", but find that more supported platforms results in fewer available APIs.

Many library developers have switched from producing multiple platform-specific libraries from one source (using conditional compilation directives) to portable libraries. There are several techniques for accessing platform-specific functionality within portable libraries.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd recommend listing or linking to descriptions of the techniques to access platform specific functionality from a PCL. A good overview of the techniques is here. Over the past year, the bait and switch approach has gained popularity and seems to be the most widely accepted technique for reusable libraries.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great suggestion. Fixed.

@richlander
Copy link
Member Author

Moving to https://github.com/dotnet/core-docs.

Please keep the dotnet-primer branch alive until we've completed the move.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
documentation Documentation bug or enhancement, does not impact product or test code
Projects
None yet
4 participants