Proposed reading for an experienced but autodidact programmer?
I have for several years been making add-ons for AutoCAD and in the past year i have also made add-ons for Revit and MS Office.
Started in 1990 programming in AutoLisp - then moved on to VB6 and VB.NET
However I feel a need for some basic knowledge on how to really structure my applications, good practices etc.
I have searched for relevant books. What I do not need is some explanation on how to make a "Hello World" dialogue ... hope you get what I mean.
Does someone have a proposal for relevant reading?
It seems to me, that is is somehow a religious matter wether to "move on" to C# or stay with vb.net.
I'm afraid that I can't provide an answer for question 1, but I will make a comment on question 2. Let me give you a bit of my background. I did a tiny bit of BASIC programming at school and a little Fortran and Pascal during a Chemical Engineering / Chemistry degree. I really learned to program during a Computer Science degree though, which was basically all C. After I graduated I worked for 2 years writing C++ code. During that time I gave VB6 a try... and hated it. I left that job not long after Microsoft released the second version (1.1/2003) of the .NET Framework and development tools, so I decided to give it a go. I chose to try VB.NET to diversify my skill set and straight away it felt much better than VB6. After developing a reasonable level of proficiency in VB.NET I decided to give C# a go too. Already having C/C++ experience and .NET experience, C# was no stretch. After working for myself for a couple of years writing primarily VB.NET code, I took a job in a small company that worked mainly in VB.NET, having previously worked with VB6, but about two years ago we switched to C# as our language of choice. I say all this so that you see that I am in a good position to know the pros, cons and differences in VB.NET and C#.
With that in mind, I can tell you that, from a development perspective, you will likely gain nothing from switching to C#. The one genuine advantage that C# offers over VB is support for pointers. That's a big deal if you find yourself in a position where pointers help because they can boost performance by orders of magnitude in particular circumstances but I've never found myself in such a situation. You will also find that you have to give up a few small things if you do change, as VB has a few handy features that C# lacks. Generally speaking though, they are pretty much equivalent with only the syntax being different. Microsoft have also committed to parallel development paths for the two languages, so there should be no future divergence either.
The whole issue really comes down to snobbery from C/C++ developers. A lot of programmers from the C/C++ side of things considered what they did to be proper programming and VB6 to be a toy. While I didn't like it myself, VB6 was a useful and powerful tool. It was created basically (no pun intended) as a programming tool for non-programmers and it was very successful as just that. Unfirtunately, many of those non-programmers were only interested in whether the completed program did what it was intended to do and, as a result, a lot of bad code was written and a lot of bad habits were developed. It's quite possible to write bad code in C/C++ but VB6 seems to almost encourage bad habits in many ways.
Now, as people have migrated to .NET development, the most common paths were from C/C++ or maybe Java (which is C-based syntax) to C# and from VB6 to VB.NET. A lot of people on the C side of the fence maintained there prejudice against VB and VB programmers, even though VB.NET is a very different beast to VB6. VB.NET is still aimed more at beginners than C# and, as a result, is a bit more lax and also maintains the verbose VB syntax but it is a much stricter language than VB6 and is fully OO like C# and all that. Unfortunately, the prejudice of the C# prgramming fraternity that was inherited from the C/C++ programming fraternity has seeped into business and there is a perception that C# is a better programming language than VB.NET. It's not, but that is the perception. So, despite the fact that C# and VB are basically equivalent and neither is really better than the other, your average C# developer will get paid more than your average VB developer for the same work and, besides that, may get more chances to do more interesting work. The company I work at changed from primarily VB to primarily C# because we didn't want to be discriminated against by clients who shared this flawed perception.
In summary, it is not a bad thing for any developer to be conversant in both C# and VB but there is no merit to switching from one to the other for technical reasons (unless you specifically need pointer support). The only reason to switch to C# if you already know VB is for business reasons, i.e. you're likely to get paid more.