How do I learn the Visual Studio way of thinking about software development?
September 24, 2008 1:45 PM
Subscribe
Visual Studio for the confused: I've inherited a C#/ASPX Net 1.1 application from what appears to have been some fairly low-skill software developers. The language, systems environment, and cleaning up the software itself aren't problems, but what the
hell am I supposed to do with all this IDE stuff? I need learning resources.
My previous software development experience has been with fundamental tools: Makefiles, gcc, Ant, javac, and scripted build processes. I've used IDEs before, but entirely for the purposes of coding and analysis, not build processes and SCM. The situation I find myself in now requires I come up to speed on the Visual Studio 2003 build system, and I'm finding it makes absolutely no sense whatsoever due to my lack of grounding in graphical build tools. It's further complicated by the way the tool seems to be conceptually tied to a web server for the purpose of development.
There seems to be a tremendous amount of magic hidden in things like "solution files" and "project files" and zillions of little "properties" windows that own metadata about dependencies and the source tree, and it's all very confusing for someone coming from a more traditional and modular software tools environment. Reverse engineering this stuff is sapping a tremendous amount of my time and productivity, especially since it seems like the previous folks on the project made assumptions about the build environment that are no longer true.
So what should I be reading that will give me a background on this Microsoft-flavored build environment so that I can get to the work at hand? I want to get this code into Subversion and make it buildable by anyone who can check it out, but that is looking more and more like I'm going to have to rejigger what happens when the Build button is pushed to remove hardcoded UNC pathnames of servers that don't exist, an almost arbitrary scattering of build prerequisites, and dependencies on having a web server at hand just to produce object code and a MSI installer.
Right now I'm coming up against something that seems like an alien artifact from a world where the definition of what a codebase is and how you build it happens to completely differ from my own. It seems completely ass-backwards every time I look at it and adds a layer of complexity that I'm unaccustomed to in my tools. Overcoming that barrier is going to be key to my short term success. What should I be reading to learn best practices about Microsoft-flavored development tools and fundamentals of the Visual Studio way of thinking about a software "solution" in order to put this codebase on track to be properly maintained? Where I come from, a couple of hours with a text editor, a fresh build script, and svn ci would have given me build automation, SCM, and code drop portability. Instead I'm in a maze of twisty little properties pages, all alike, and eliminating my ignorance is an important first step.
Please note that I'm not asking about tool choice. I can make tool decisions on my own. I'm looking for ways to educate myself on how what I have works as is, so I can make intelligent decisions about how to restructure and retool the project for maintainability and save a lot of pain for the next person who has to tend to this application. I work with that next person, and want to be nice to them by giving them a software project, toolchain and development process that Just Works.
posted by majick to computers & internet (11 comments total)
you mention a couple of times that things are hidden in the solution and project files. if you have not already noticed these files are at their heart text files; you can view and edit them in your text editor of choice if you prefer.
posted by phil at 2:10 PM on September 24, 2008