从程序集中安装或卸载 DLL

install or uninstall DLLs from Assembly

我试图找到一种通过 C# 代码从 GAC 安装和卸载 dll 的方法,但我发现的唯一东西是 "Gacutil.exe",而且非常不清楚如何使用它。

有更好的方法从 GAC 安装\卸载文件。 谢谢

您可以使用 PowerShell,for example。 或者如您所说,使用 gacutill 但 Micsrosoft 说:

Gacutil.exe is only for development purposes and should not be used to install production assemblies into the global assembly cache.

我认为最好的方法是使用安装程序来完成这项工作。 GAC 中的库应仅在安装期间添加,仅在卸载期间删除。

Here 是如何设置安装程序的示例。我认为其他安装程序也应该这样做。

经过研究我发现了这个:(正如你想要的 C# 代码 ;-) )

要将程序集安装到 GAC 中:

new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");

要从 GAC 卸载程序集:

new System.EnterpriseServices.Internal.Publish().GacRemove("MyAssembly.dll");

在项目文件中,您可以通过将以下内容放入 Post-Build 事件中,在构建后自动对程序集进行 GAC。

"C:\Program files\Microsoft Visual Studio 8\SDK\v2.0\Bin\GacUtil.exe" -i "$(TargetPath)"

以同样的方式将卸载命令添加到预构建。