Wie deinstalliere ich den GAC aus meiner C# -Anwendung.Deinstallieren von GAC In C# -Code
Ich bin nicht in der Lage, die bestimmte exe und DLL von GAC zu deinstallieren.
Ist es der richtige Weg, den GAC in C# zu deinstallieren?
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;
}
Möchten Sie die Registrierung durch die Process-Klasse aufheben? – Talha
Siehe http://stackoverflow.com/a/2611435/17034 –
["C# Source Code: Programmgesteuertes Hinzufügen und Entfernen von Baugruppen aus dem GAC (ohne Verwendung von GACUTIL)"] (http://www.vbusers.com/codecsharp/ codeget.asp? ThreadID = 65 & PostID = 1) –