As I promised, I’ll be posting entries about work on the new Debugging, Testing, and Tuning .NET Applications. That way you’ll get to see exactly how the sausage is made. 😛 I had a little vacation over the American Memorial Day weekend and an emergency debugging session to handle so here’s a summary of what’s been going on over the last 10 days or so.
As anyone who’s gotten one of my books in the past knows, there’s tons of source code included with the book. This one will not be any different so I wanted to get my source plan in order before I really started adding the code. As I’ve always advocated building the installation first, that’s exactly what I did.
Originally, my intention was to use the very interesting Windows Installer XML Toolset (WiX) as it was open source and my code could serve as an example for others. However, the best plans don’t always work out. While WiX is cool, I quickly realized that 1) the WiX documentation was not complete, and 2) the installation stuff in Windows has gotten massively more complicated than the last time I worked on an installation! In order to use WiX to build my moderately complicated installation, I was going to have to devote a minimum of a month to becoming an installation expert.
Instead, I opted for using Wise for Windows Installer Professional, which is working out quite nicely. The only problems I’ve had with it were related to its licensing. I’m a big believer as running with Least User Access so I logged in as an Administrator to install Wise. Everything went fine, except when I logged back into my LUA main account. Every time I started Visual Studio .NET 2003, I was greeted with an error message that Wise couldn’t find the license file for its VSIP integration. Turns out Wise is licensed on a per user/account basis instead of machine basis and they assume that only folks logged in as Administrators are ever going to be running Visual Studio .NET. I would have been fine with that, but oddly, their installation does not allow you to opt out of installing the VSIP integration at all. (Interestingly, I’ve found the stand alone Wise development tool is outstanding so I would much prefer not to have the IDE integration at all).
After a call to tech support I was given permission to install in both my Administrator and John accounts without breaking the EULA. Overall, I’ve been very happy with the Wise toolset. It’s allowed me to build a decent installation in one percent of the time I would have done with WiX or weak Visual Studio Setup Wizard.
I have had a couple of problems with my installation, but those are all related to the complexity of the Microsoft Installation API. For example, I wanted the exit page of the installation to offer check box options to start the read me file and connect to the book web site. I managed to get the check boxes working, by adding them to the exit dialog, but now they are active even if you do a maintenance install or repair. I haven’t quite figured out how to get them to only appear on normal installation. If anyone knows how to fix this, shoot me an email (‘john’ care of this company.)
To have something to install, I decided the read me should be in a .CHM file so it would be easier to read and search for specific items. The HTML Help Workshop works great, but I needed to edit the raw HTML files. Word’s HTML output is not so great so I broke down and installed FrontPage, (which I last used a million years ago and wasn’t too impressed) because I had it with my MSDN Universal subscription. The 2003 version, which I’m using right now, certainly is a million times better. Wow!
After getting the installation and read me going, I turned to the build system. Not having spent much time with MSBuild, I knew I was going to have to make an investment to get my head around it. Having been an NMAKE maestro in the past, I had the concepts down, but realized the main learning curve was all the fiddly details. I wouldn’t call myself an expert yet, but I think I have the hang of it.
The first coding I did was to build a few of MSBuild Tasks I needed. The first was to wrap HHC.EXE, the HTML Help Workshop help compiler. The second and third are for automatically generating the build number and the appropriate AssemblyFileVersion source files. I’ll next tackle a task to handle calling the Wise installer.
The Latest I’m Totally Loving about Visual Studio .NET 2005
The new resource editor and autogenerated Resources class are completely and totally heavenly!
MSBuild compatible files being used for all projects
Pressing enter in an XML Doc comment automatically places the “///” or “”'” on the new line
The Latest Problems I’m Having with Visual Studio .NET 2005 Beta 2
It’s got a bit of a memory leak problem. 🙂
The FxCop integration does not pick up CustomDictionary.XML
Visual Studio Team Test needs some work
– When you start a test from the IDE, the working directory is off somewhere in the user’s application data folder instead of the directory where the tests are defined so you are stuck hard coding complete paths to any files you want a test case to use. (Yeech!)
– Code coverage only works if the binary is started from the IDE and under TeamTest. I haven’t figured out how to get code coverage on my MSBuild Tasks since my test spawns off MSBUILD.EXE, which loads my task so it’s not under the IDE.
– The usage model is a little more complicated that I think it needs to be.
What’s up Next?
Finish off the Wise MSBuild task
Finish off master build project
Start work on the WinDBG/SOS/ADPlus chapters
Set up my new supercomputer box arriving next week! (Think dual processor, dual core). w00t!