Visual Studio 2005

First the good. My current C++ projects were updated from VS6.0 so the project files are quite messy. One project file was 250KB large. One of the feature I like about VS2K5 is unloading the project (right click on the project in the Solution Explorer). Then right click it again and choose Edit project. Ta-da, you can edit the raw XML of the project. Now in my projects I had for each file, extras that were always blank.

<File
RelativePath=ActDt.cpp
>
<
FileConfiguration
Name=Debug|Win32
> <
Tool
Name=VCCLCompilerTool
AdditionalIncludeDirectories=“”
PreprocessorDefinitions=“”
/>
</
FileConfiguration
>
<
FileConfiguration
Name=Release|Win32
>
<
Tool
Name=VCCLCompilerTool
AdditionalIncludeDirectories=“”
PreprocessorDefinitions=“”
/>
</
FileConfiguration
>
</
File>The Italics parts are just filler, as they are not add any new options. So using the fancy Search-and-Replace (Ctrl-H) and this handy visual studio regex ^:b+\<FileConfiguration\n(.*\n)(.*\n)(.*\n)(.*\n)(.*\n)(.*\n)(.*\n):b+\</FileConfiguration\>\n to can find all the blocks, and replace with empty. But you don’t actually want to use the above regex, as it will match lines that with seven inner lines but things like

UsePrecompiledHeader="1"

which you don’t want to lose. So I changed it to

^:b+\<FileConfiguration\n(.*\n)(.*\n)(.*\n)(.*\n)(:b+.*=””\n)(:b+PreprocessorDefinitions=””\n)(.*\n):b+\</FileConfiguration\>\n

So now we know only blank entries will be removed, we can charge ahead and press the Replace All button. Oh the rush, did it work? Anyway after the trimming the large project is only 35KB now. The above file block only has two build targets, but the large project had seven, thus every file had seven FileConfiguration blocks.

After editing, close the project file, then right click to Reload it.

Now the other part of this post is for me to rage that devenv.exe (Visual Studio) keep using 100% of one of my CPU’s when editing/debugging more than one solution at once. Which is really annoying as I have 4-5 programs in our product, and I want to debugging then concurrently. It seems that if I start a new copy of VS while another is debugging it’s lost to the weeds until I reboot.

It gets tiring having the debugging going to a crawl. The whinge is now out of my system now, thank you.

Visual Studio 2005, C++ and Time

Microsoft wisely updated time_t and the ATL CTime and CTimeSpan to use a int64 under the hood (from a int32), this is good except when we have those data types in our interfaces, and now we have broken backwards compatibility.

time_t has a a define you can use force time_t to stay a int32 _USE_32BIT_TIME_T. Unfortunately CTime/CTimeSpan do not respect this. One of our DCOM components packs arrays of objects into a stream. To make the game more fun one object element was a CTime and another was a variable length string. The fun began when another teams Delphi tool unpacked these streams and went off into the weeds because the packed objects were different lengths, thus the variable length string’s length was in a different place. Lots of fun debugging that one.

Anyway, the current solution was to change the object’s to use int32’s instead of CTime/CTimeSpan, and downcast the int64 result from .GetTime() and .GetTimeSpan() to a int32. Now our interface is restored. Ok so we are not future proof, and that app will start to behave fun some time in the future, but this just adds to the code paths that need retiring. Oh the joys of large old systems.

Visual Studio 2005

Well after attending Connect Technical Session, I duly collected my Visual Studio 2005 (and other stuff).

Tonight I installed VS2005 and I have to say it went without a hitch. It told me I had the RTM of Visual Studio 2005 installed, and showed me a URL with instruction to uninstall it. I ran the uninstall program, and it just worked. 50 minutes after that I have VS2005 and MSDN installed.

Thoughts after playing in my Curse of the Azure Bonds project, seems faster. Not actually sure of timing, but pause while it parsed the error list (for all 1500 errors) feels shorter.

Thoughts from my first Microsoft event…

It was cool. I was surprised by the number of attendees. While Craig and I were talking at the end, the key note speaker Jonathan Tom came up and talked to us. We had been talking about the new features, and how it will be hard to get them adopted because most of our work is on going evolution of our core product. Craig was also interested in the push of BI, Jonathan been a Senior Product Manger SQL Server Marketing was happy to talk about these things. It was cool that he chatted with us, so I tried asking a tricky question about the role of BI as leverage to sell/upgrade people verse extending the power to users. Been the marking guy he was he had a solid and respectful answer to both natures of the question.

The best session for me was Darryl’s Smart Client talk. While I’d seen the parts demoed before, it was nice to see him whip it all together. He also had good stage presence, and tried to redeem his name after the Wayne’s slander in the Team System talk. (Note for Darryl: remember to look into my issues with the Connections Site)

Other than the PA system bang, and Jonathan failing off the stage, it all went well.