My PC was a completely screwed up mess. Nieither the unistall
tool or the manual uninstall at
http://msdn.microsoft.com/vstudio/su...l/default.aspx
worked. I also tried the VS 2005 beta cleanup tool at
http://blogs.msdn.com/astebner/archi...25/411974.aspx. This
tool was designed to remove Beta 1 in preparation for Beta 2. I
needed to remove Beta 1 in preparation for VS2005 Pro, not exactly the
same thing. No matter what I did VS2005 still crashed on startup;
though I think the 3 steps: uninstall tool, manual uninstall, and VS
2005 beta cleanup tool did move me closer.
In despiration I wrote me own tool to remove anything in the GAC
whose File Version included the word "beta" That was an extension of
what the VS 2005 beta cleanup tool did. To my shock it worked!
Here is the VS2003 code to remove "beta":
private void timer1_Tick(object sender, System.EventArgs e)
{
this.timer1.Enabled=false;
// test dll file info
// FileVersionInfo info =
FileVersionInfo.GetVersionInfo(@"C:\temp\Microsoft .VisualStudio.TextManager.Interop.8.0\8.0.0.0__b03 f5f7f11d50a3a\microsoft.visualstudio.textmanager.i nterop.8.0.dll");
// fileVersion "8.0.40607.16 (beta1.040607-1600)" string
string path=Environment.GetEnvironmentVariable("Windir");
path+="\\assembly";
string [] dirs=Directory.GetDirectories(path);
foreach (string pp in dirs)
{
if (pp.Substring(pp.LastIndexOf('\\')+1,3)=="GAC")
{
string [] sdirs=Directory.GetDirectories(pp);
foreach (string spp in sdirs)
this.dirFiles(spp);
}
}
using (StreamWriter sw=new StreamWriter(@"c:\temp\delete
dirs.txt"))
foreach (string s in ddirs)
sw.WriteLine(s);
Environment.Exit(0);
}
ArrayList ddirs=new ArrayList();
public void dirFiles(string path)
{
string [] dirs=Directory.GetDirectories(path);
foreach (string dir in dirs)
dirFiles(dir);
string [] files=Directory.GetFiles(path);
bool fileDeleted=false;
foreach (string file in files)
{
string fp=file;
FileVersionInfo info =
FileVersionInfo.GetVersionInfo(fp);
if (info.FileVersion.ToLower().IndexOf("beta")>=0)
{
Trace.Assert((((TimeSpan)(System.DateTime.Now-File.GetCreationTime(fp))).Days>200),"File
too new");
File.Delete(fp);
fileDeleted=true;
}
}
files=Directory.GetFiles(path);
dirs=Directory.GetDirectories(path);
if (files.Length==0 && dirs.Length==0 && fileDeleted)
ddirs.Add(path);
}
}
Here is the VS2005 Pro code to delete empty directories from the GAC
that I ran after I got VS2005 working with the above code:
private void timer1_Tick(object sender, System.EventArgs e)
{
this.timer1.Enabled=false;
string s;
using (StreamReader sr=new StreamReader(@"c:\temp\delete
dirs.txt"))
{
while ((s=sr.ReadLine())!=null)
if (s.Length > 0)
{
if (Directory.Exists(s))
Directory.Delete(s);
string path = s.Substring(0,
s.LastIndexOf('\\') - 1);
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path);
string[] dirs =
Directory.GetDirectories(path);
if (files.Length == 0 && dirs.Length == 0)
Directory.Delete(path);
}
}
}
Environment.Exit(0);
}