Friday, March 21, 2008

.NET Assembly uninstall problem

Have you ever encountered this error when you try to uninstall a .NET assembly?
Unable to uninstall: assembly is required by one or more applications Pending references:
Most probably yes!

Cause:
It is because that assembly is installed by an installer (anyone.. including standard .net MSI) . Installer specifies a traced reference count on the assembly being installed so when you try to delete assembly using GACUTIL, you get above error. I couldn’t uninstall some assembly while I was manually uninstalling a software.

Work Around:
Method 1:
Use GACBrowser software to remove such assembly (uses 3rd approach specified below). It’s Easy, search and select assembly to remove. And removed!!
Download from here:
http://sourceforge.net/project/showfiles.php?group_id=214315
GAC Browser is powerful tool to search and remove assembly. It is must have tool for any developer dealing with assemblies. On an average, if you have visual studio 2005 installed on your PC, you may see more than 1000 assemblies on you PC. There is no good way of searching assembly in you GAC unless you have GAC Browser with you. Also visibility in GAC is increased with more info like when it was last GACed. Double click any assembly to de-assemble the assembly in ILDASM. All in one! That’s why I said it a “must have”!
Method 2:
Windows maintains trace reference count in registry at two places.
[HKCU\Software\Microsoft\Installer\Assemblies\Global]
[HKLM\SOFTWARE\Classes\Installer\Assemblies\Global]
So you may want to go to this registry and remove the entry of the assembly that you want to uninstall. Use GACUTIL to remove assembly from GAC.
Method 3:
Go to Assembly folder using command prompt.1. Open CMD2. Go to assembly directory (for most of us: C:\Windows\assembly), If you type ‘DIR’, you may find different folders (important are: GAC, GAC_MSIL, GAC_32)3. Search your assembly folder from this folder, go to appropriate version folder and remove the folder.

Conclusion:
You may want to have GAC Browser software as well has use method 2 for clean operation. GAC browser is soon coming up with in build method 2.

No comments: