Understanding the philosophy and architecture of .NET is important for any Microsoft developer. The .NET Framework is not an abstract programming model. It is a full-featured system that allows developers to implement their solutions and then make them available to other developers in a robust and secure environment. This book shows developers how to produce generic frameworks, libraries, classes, and tools to be used in the .NET Framework. It also shows how to use the right language to develop parts of a system and then incorporate these parts together at runtime regardless of language differences. The book will conclude with a series of appendices from contributors who are very active in the .NET community.
Although incredibly dated (considering it's based around C# 1.0 and we're on version 4.0 of the language therefore containing some deprecated content), I found it to serve as a good reference book in certain less frequently used features of the language. In particular, I made use of the pages on delegation and System.Reflection for a piece of 4th year computer science coursework which were most helpful.
As a main reference book there are countless alternatives to choose from I consider to be superior to Programming in the .NET Environment.