博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uninstall from GAC In C# code
阅读量:7058 次
发布时间:2019-06-28

本文共 2239 字,大约阅读时间需要 7 分钟。

How do I uninstall the GAC from my C# application.

I am not able to uninstall, the particular exe and DLL from GAC.

Is it the proper way to uninstall the GAC in C# ?

 

public void RemoveAssembly(string ShortAssemblyName, string PublicToken){    AssemblyCacheEnum AssembCache = new AssemblyCacheEnum(null);    string FullAssembName = null;    for (; ; )    {        string AssembNameLoc = AssembCache.GetNextAssembly();        if (AssembNameLoc == null)            break;        string Pt;        string ShortName = GetAssemblyShortName(AssembNameLoc, out Pt);        if (ShortAssemblyName == ShortName)        {            if (PublicToken != null)            {                PublicToken = PublicToken.Trim().ToLower();                if (Pt == null)                {                    FullAssembName = AssembNameLoc;                    break;                }                Pt = Pt.ToLower().Trim();                if (PublicToken == Pt)                {                    FullAssembName = AssembNameLoc;                    break;                }            }            else            {                FullAssembName = AssembNameLoc;                break;            }        }    }    string Stoken = "null";    if (PublicToken != null)    {        Stoken = PublicToken;    }    if (FullAssembName == null)        throw new Exception("Assembly=" + ShortAssemblyName + ",PublicToken=" +         token + " not found in GAC");    AssemblyCacheUninstallDisposition UninstDisp;    AssemblyCache.UninstallAssembly(FullAssembName, null, out UninstDisp);}public static void UninstallAssembly(String assemblyName, InstallReference reference, out AssemblyCacheUninstallDisposition disp){    AssemblyCacheUninstallDisposition dispResult = AssemblyCacheUninstallDisposition.Uninstalled;    if (reference != null)    {        if (!InstallReferenceGuid.IsValidGuidScheme(reference.GuidScheme))            throw new ArgumentException("Invalid reference guid.", "guid");    }    IAssemblyCache ac = null;    int hr = Utils.CreateAssemblyCache(out ac, 0);    if (hr >= 0)    {        hr = ac.UninstallAssembly(0, assemblyName, reference, out dispResult);    }    if (hr < 0)    {        Marshal.ThrowExceptionForHR(hr);    }    disp = dispResult;}

  

转载地址:http://wqyll.baihongyu.com/

你可能感兴趣的文章