I like Dino Esposito's books. Even his beginner books are more advanced than other beginner books. But there are other options:
1) if you do vb
.net (or if you do C#, but you aren't afraid to look at vb
.net), the desktop videos from www.learnvisualstudio.net
are amazing and fairly cheap compared to other videos. Bob Tabor spent many hours showing people exactly how to move around in VS and do many things. There are some videos specific to C#, but most use VB
. The best thing you can learn here is all the little tips that you won't find in a book.
2) creating your own solutions, adding projects to it, and playing around with those will teach you a lot.
3) usergroups give you a lot of help. Sometimes you can meet someone who can sit down with you and show you how to do things.
4) other more advanced developers in your company can help you. I do a lot of coaching within my company, and so do a lot of others. If you don't have more experienced co-workers, then the other items here are more important.
5) Open the .sln and project files with Notepad to see what's in there. Don't be concerned about GUIDs - look at the other stuff.
6) Look in the bin folder at the DLLs. Open them with ildasm and look at the manifest. See how the references show up there?
7) Think about what happens in VS when you add a reference to a DLL. It uses reflection to examine that DLL so it can show you intellisense on it. Your "using" ("imports" for VB
) merely gives you a shorthand notation for referencing objects in the DLL. That's ALL it does. You don't need "using" at all if you fully qualify all your object names. This is crtical for you to understand. It's small and simple, but it's a critical building block. The difference between a reference and "using" is often misunderstood, and you don't have a chance to move on until you "get it".
8) why is the reference used at compiletime? You know it's for intellisense and code completion inside the VS IDE, but how is it used to compile your program? Unlike VB6, C++, Delphi, and most others, there is no such thing as static linking in .NET. You are NOT linking to DLLs at compiletime, but rather you're only doing syntax and semantic checks on classes and methods (the same stuff you saw in Intellisense), and then you're just making a small entry in your own manifest to point to that assembly. This is also critical to understand - you are not compiling/linking that code into your program's DLL.
9) Consider studying Amit Kalani (C#, 70-315) or Mike Gunderloy's (VB
.NET 70-305) certification books on ASP.NET. The big blue books - not the red study guides. They have tons of step-by-step examples that will teach you a TON of great info. You don't have to know anything to start those books - they start at gound 0. The nice thing about these books is that they don't skip important info - they have to cover it all because that's what is needed to pass a test. You don't have to actually take the test to learn a ton of stuff this way.
10) If you don't have local friends into .net, try to make friends in the newsgroups. Use a yahoo or hotmail email addr because you'll get a ton of spam. You can get some penpal friends this way and you can try to stump each other with .NET questions. This will also teach you a lot.
11) You can learn a lot by trying to answer other people's questions in newsgroups. Pick the ones you think you understand, do a few quick google searches on that info, and then post a good response. It will build your confidence and you can keep upping the level of questions you answer, and you can add follow-up questions to other people's posts to learn a little more if you don't understand what they said.
This will get you started. It's hard to teach a lot of general stuff in a message. but you must understand this stuff in order to be a really great .NET programmer.