Didn't know it could be this difficult to pull something out of the GAC
So, a few days ago, one of my favorite TFS/Outlook add-on stopped working.
Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.TeamFoundation.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Puzzled, I figure there's something odd with the Fusion loader. Popping into the GAC I saw this horror!
I must have installed something that upgraded all the library to version 9.0. OK, no problems, let me uninstall the old version 8...
Exception:
Assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client' could not be uninstalled because it is required by other applications.
A bit of reading lead me to this article.
GAC Assembly Trace Reference
http://blogs.msdn.com/junfeng/archive/2004/09/13/228651.aspx
Hitting gacutil to see what's referencing it...
c:\Program Files\Microsoft Visual Studio 9.0\VC>gacutil /lr Microsoft.TeamFoundation.WorkItemTracking.Client
Microsoft (R) .NET Global Assembly Cache Utility. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
The Global Assembly Cache contains the following assemblies:
Microsoft.TeamFoundation.WorkItemTracking.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86
SCHEME: <WINDOWS_INSTALLER> ID: <MSI> DESCRIPTION : <Windows Installer>
Microsoft.TeamFoundation.WorkItemTracking.Client, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86
SCHEME: <WINDOWS_INSTALLER> ID: <MSI> DESCRIPTION : <Windows Installer>
Number of items = 2
Taking great care not to uninstall both versions, I'm being ultra cautious:
c:\Program Files\Microsoft Visual Studio 9.0\VC>gacutil /l "Microsoft.TeamFoundation.WorkItemTracking.Client, Version=8.0.0.0"
The Global Assembly Cache contains the following assemblies:
Microsoft.TeamFoundation.WorkItemTracking.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86
Number of items = 1
Ok... go crazy!
c:\Program Files\Microsoft Visual Studio 9.0\VC>gacutil /u "Microsoft.TeamFoundation.WorkItemTracking.Client, Version=8.0.0.0"
Microsoft (R) .NET Global Assembly Cache Utility. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
Assembly: Microsoft.TeamFoundation.WorkItemTracking.Client, Version=8.0.0.0, Cul
ture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=x86
Unable to uninstall: assembly is required by one or more applications
Pending references:
SCHEME: <WINDOWS_INSTALLER> ID: <MSI> DESCRIPTION : <Windows Installer>
Number of assemblies uninstalled = 0
Number of failures = 0
Not knowing the keys to run gacutil /ur, I turned and did more research:
This one is from the Fusion guys
http://blogs.msdn.com/alanshi/archive/2003/12/10/42690.aspx
I found two of the reference keys in the registry. And exported them just to be safe.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Assemblies\Global]
"Microsoft.TeamFoundation.WorkItemTracking.Client,Version=\"8.0.0.0\",PublicKeyToken=\"b03f5f7f11d50a3a\",Culture=\"neutral\",RuntimeVersion=\"v2.0.50727\",processorArchitecture=\"X86\""=hex(7):65,\
00,45,00,65,00,2b,00,48,00,25,00,65,00,30,00,78,00,40,00,45,00,59,00,7a,00,\
4b,00,4c,00,2c,00,70,00,71,00,5e,00,41,00,3e,00,2e,00,32,00,2a,00,7d,00,66,\
00,7b,00,40,00,35,00,49,00,3f,00,69,00,4a,00,68,00,67,00,78,00,59,00,7a,00,\
7a,00,4c,00,2c,00,00,00,00,00
"Microsoft.TeamFoundation.Common,Version=\"8.0.0.0\",PublicKeyToken=\"b03f5f7f11d50a3a\",Culture=\"neutral\",RuntimeVersion=\"v2.0.50727\",processorArchitecture=\"X86\""=hex(7):65,\
00,45,00,65,00,2b,00,48,00,25,00,65,00,30,00,78,00,40,00,45,00,59,00,7a,00,\
4b,00,4c,00,2c,00,70,00,71,00,5e,00,41,00,3e,00,66,00,6c,00,45,00,37,00,36,\
00,72,00,3f,00,47,00,34,00,3d,00,59,00,49,00,29,00,41,00,4c,00,71,00,5f,00,\
5f,00,58,00,54,00,00,00,00,00
Then I dropped these trace references from the registry.
Head back to the GAC, uninstall the two offending Assemblies.
Pop back to Outlook. Hey, my favorite addon works again.
:-)
Hope this helps someone out there.
jliu