如何覆盖 GAC 中的程序集

How to override assemblies in GAC

在我的应用程序中,我将第三方程序集安装到 GAC 中。这些第三方程序集是非常大的 dll 文件,所以我不想将它们部署在应用程序 bin 文件夹中,以节省磁盘 space。

现在我收到了其中一个程序集的补丁,其程序集版本与以前完全相同。然后我将不得不覆盖 GAC 中的程序集。我该怎么做?

一些用户可能安装了我的应用程序的许多不同版本,我不能只向他们发布一个带有补丁程序集的新版本并要求他们卸载所有那些旧版本,因为那样会非常乏味。

我也不能使用 GacUtil,因为如上所述,如果没有像 VS 2015 这样的标准调试工具,我将不得不在客户端机器上部署这些程序集。

我在想的是我想通过命令行或安装程序覆盖 GAC 中确切的错误程序集。我该怎么做?

据我所知,最简单的方法是将 DLL 拖放到相应的 GAC 文件夹中。我已经在 Windows 7 和 Windows 10 上进行了测试,并且有效!

此外,还可以像 this answer 那样编写包装器 class。