If you want to know how .Net Framework works internally then there is very good book by Serge Lidin – Expert .NET 2.0 IL Assembler. Serge Lidin is author of IL Assembler, IL Disassembler. He is also one of those guys who wrote IL Assembler language specification. This book is excellent guide to understanding how .NET Framework internally works, how code is compiled and executed and what are expectations for compilers.
My review
Although the books concentrates more on IL Assembler, it gives a very good review how lower layers of .Net Framework work and how these layers are built. For beginners this book is too heavy reading I think, because this book is fun if you have very good knowledge of .Net Framework. Those who are unfimiliar with IL can start with it using Visual Studio like suggested in my blog post .Writing IL code on Visual Studio.
The book is published many years ago but in big part it holds true for newer .NET versions like 4.0 and 4.7 as not much is changed in basic concepts of .NET Framework.
If you don’t know what is IL and you want to see how IL assembly language look then take a look at posting C# and var keyword. Second block of code there is in IL assembly language. Looks horrible but it is not so hard if you study it a little bit.
For me the most interesting topics were about how different .Net language compilers behave in different situations and what kind of code they are generating. Also there were some interesting pieces of information about limits of different compilators. By example, now I know what features of .Net Framework are used for global variables that VB.Net supports.
Expert .Net 2.0 IL Assembler is weird book. It is like mixture of good reading and manual. If you are writing IL Assembler code you can take this book on your table and you can be sure this book helps you. If you want to read about IL Assembler, again take this book and read. It works well in both cases.
Table of contents
- Quick start
- Simple Sample
- Enhancing the Code
- Making the code easier
- Understanding Structures
- The Structure of Managed Executable File
- Metadata Tables Organization
- Fundamental Concepts
- Modules and Assemblies
- Namespaces and Classes
- Primitive Types and Signatures
- Fields and Data Constants
- Methods
- Generic Types
- Generic Methods
- Inside the Execution Engine
- IL Instructions
- Managed Exception Handling
- Special Components
- Events and Properties
- Custom Attributes
- Security Attributes
- Managed and Unmanaged Code Interoperation
- Multilanguage Projects
- Appendixes
- ILAsm Grammar Reference
- Metadata Tables Reference
- IL Instruction Set Reference
- IL Assembler and Disassembler Command-Line Options
- Offline Verification Tool Reference