i was recently asked by a friend of mine for some recommendations on .net books.
so without further ado, here are some of my own personal favorite recent books on software development (in no particular order...this is also not meant to be an in depth review of any of the following books either):
Essential .NET, Volume I: The Common Language Runtime
by Don Box
What can i say? don box is the man. he has such a deep understanding of this material. most of the stuff in here is just basic .net infrastructure type stuff, however it's something that ever serious .net developer should know. in addition, if you're fairly new to object oriented development, his discussion on interface types is probably the best i've ever read anywhere. the chapters on methods and advanced methods (chapters 6 & 7) are also fantastic.
Applied Microsoft .NET Framework Programming
by Jeffery Richter
Again, this book covers basic .net infrastructure stuff. goes into detail about types, methods, events, etc... has a great chapter on garbage collection and disposable resources.
Programming .NET Components
by Juval Lowy
this is a great book. almost every chapter has great insight on topics that are relevant to every .net developer. he goes to great lengths to talk about events, asynchronous methods, multithreading, and serialization. almost any serious application will be using not just one or two of these, but almost all of these concepts in various combinations. really, really important stuff. for some reason i don't think a lot of developers are aware of this book, but i think it's a must have.
Essential ASP.NET With Examples in C#
by Fritz Onion
if you need just one book on asp.net, this is the one to get. fritz covers just about every single aspect of asp.net application development. has information on modules & handlers, user & custom controls, page & control lifecycles, state management, etc... plus it's not written as a fucking 1000 page plus tome of bullshit. very clean and readable writing style - it's amazing for a fairly small book it manages to contain almost everything you would ever need to develop asp.net applications.
Developing Microsoft ASP.NET Server Controls and Components
by Nikhil Kothari, Vandana Datye
i really love this book. even though this book is primarily focused on asp.net custom control development (and it is the best of its kind on that topic), i can guarentee that if you understand the shit in here, you'll have a tremendously deep understanding as to what the fuck is happening under the covers in asp.net. reading this book can also give you a real good understanding of what is going on at a higher architectual level as well.
Refactoring: Improving the Design of Existing Code
by Martin Fowler
the techniques in this book are again something every developer should be familiar with. they will also help you write much better code. this is a very practical book. refactoring is a very pragmatic approach to writing better code, and it's something that should be a habit for every developer.
Test Driven Development: By Example
by Kent Beck
unit testing has become very popular lately, and nunit has surged in popularity. this is a Good Thing. along with refactoring, unit testing will help you write better, less bug prone code. personally my favorite benefit of unit testing is that your public api's will be much cleaner and have a much better design to them. i have heard very good things about a book published more recently that focuses on unit testing from a pure .net perspective called Test-Driven Development in Microsoft .NET. the author was also the developer for nunit. i should probably pick this up...
Patterns of Enterprise Application Architecture
by Martin Fowler
this book (like the above) is not really specific to .net development. however, it can definitely make you build better .net applications. having all these patterns in one book with pros and cons, examples, and usage is fantastic. most of the patterns focused on business and domain models should be read by .net developers, because they should get past the datatable, dataset-centric view of development (where appropriate...but this is the topic for another post). .net developers could really learn alot from reading this.
Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans
this book is a fucking must have. i think this is the best software development book that has hit the shelves in a long time. one problem i see time and time again with most developers in the microsoft world (this is my world as well), is the data-centric view that most systems are designed with as opposed to a domain view (again where appropriate). reading this book can go a tremendously long way in filling in that deficiency. it also ties in how design, architecture, patterns, refactoring, and other concepts all interact together.
there are many other good titles out there as well, but these were the ones that i really dug in the last year or so...definitely feel free to contribute any titles...i'm always on the look out for a good book.