| Because I
have switched over to Visual Studio.NET 2003 exclusively, (I've wiped
2002 off all my boxes already!) I realized there would be times that I
needed to convert Solutions and projects back and forth between versions.
So, not being one to reinvent the wheel, I searched around and found this
article and
code by "Dacris" . In that article, he explains the necessary
steps to convert .soln, csproj, .vbproj, .resx etc. files from one version
to the other.
I played around with it and although his code is sound,
it's a little outdated (the last build on RTM is now 3077). In addition,
I didn't particularly like the un-intuitive way you had to go and choose
and load each of the files that needed to be changed. Also, it didn't
have any exception handling for some of the more common file problems,
such as what if your project contains read-only files? You certainly want
to know about it, but you sure don't want the program to blow up on you
if it does.
I reasoned, VS.NET solution files are almost always in
a folder and its subfolders. So why not just have a kind of "Folder
Dialog" that lets you choose the folder of the Solution you want
to convert, and it would automatically iterate all the
subfolders and files and load them into the listbox for you.
Then when you hit the convert button, it would take care
of everything. So i added to and improved his example and came up with
my own "converter utility". The result is shown below:
You can download the full VS.NET 2003 solution which includes a pre-built
release executable, at the bottom of this article.
As always, I'm going to share some code that will illustrate
how this all can be done. First, we have a folderSelect class that uses
the Treeview Control to build a list of folders on available drives. You
press LOAD and navigate to the folder of your project and select it. It
then uses the TraverseFolder method to recursvely add all of the correct
file items to the listbox:
private void TraverseFolder(DirectoryInfo dir)
{
FileInfo[] filesInDir = dir.GetFiles();
foreach(FileInfo file in filesInDir)
{
if(file.Extension ==".sln" || file.Extension ==".vcproj" || file.Extension ==".csproj" ||file.Extension ==".vbproj" || file.Extension ==".user" || file.Extension ==".resx")
listBox1.Items.Add(file.FullName);
}
DirectoryInfo[] directories = dir.GetDirectories();
foreach(DirectoryInfo newDir in directories)
{
TraverseFolder(newDir); // recursive call
}
} |
Once the items are added, we have the two original methods that will
load each of the files in the listbox, convert the correct items in the
selected files to their new values , and save off each file. I added auido
feedback, exception handling, and informational messages are written to
the Label control at the bottom of the main form. And that's it! Easily
convert VS.NET 2002 solutions and project to 2003, or from 2003 back to
2002!
And before I close, let me just share a little popular financial
wisdom that totally knocks me out, now that we seem to have finished
the main part of our business in Iraq and I've filed my tax return. When
is a tax cut not a tax cut? Last time I looked, we still have
a progressive tax system that unfairly penalizes entrepreneurship
and wealth. If you make $10,000 a year and I make $100,000 a
year and we both pay 10% income tax, aren't I contributing 10
times more money to the tax system than you are? Fair enough,
right? But the fact is, because my progressive tax rate is actually so
much higher than yours, I am actually contributing far more than
10 times the amount. Now some liberal mathmaticians, with their
incredible faulty math, think that because an across - the board tax cut
wouldn't put as much money in the hands of the $10,000 people, that it
unfairly "benefits the rich"! As usual, they are promoting this
"up the gazoo". And you know what? Most of the polls
show that the majority of the American public actually believes
this rubbish!
N.B. As I update this on 3/12/04 to include a link to the MSI for the
2002 version (by popular request) this rings true- our friend John Kerry
et. al. think the rich aren't paying their "fair share". Faulty
math...
MSI installer for the 2002 version: http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=515
Download
the code that accompanies this article
| |
| | Peter Bromberg is a C# MVP, MCP, and .NET consultant who has worked in the banking and financial industry for 20 years. He has architected and developed web - based corporate distributed application solutions since 1995, and focuses exclusively on the .NET Platform. |
|