0

我有多个服务正在从 GAC 中提取程序集。当我安装其中一项服务时,它会使用由各种服务共享的新程序集更新 GAC,并将新策略文件插入 GAC,以便所有以前的版本都查找新程序集。所有服务都在不重新启动服务的情况下采用该策略并完美地使用新程序集。问题和问题是当我回滚此版本并卸载程序集和策略并重新启动与安装新程序集相关的服务时。显然,重新启动的服务会在 GAC 中选择以前版本的程序集。但是,在使用此程序集的服务器上运行的其他服务仍绑定到策略文件中的新版本程序集。我的问题是:

绑定是否像缓存一样,最终会释放它并重新拾取旧程序集?还是会一直绑定直到服务重新启动?

如果它需要重新启动,除了找到所有使用此程序集的服务并重新启动这些服务,或者重新启动服务器本身以消除对已从 GAC 中删除的程序集的遮蔽之外,是否还有其他方法?

4

1 回答 1

1

.NET 运行时在关闭应用程序域之前不会卸载程序集(通常在进程退出时,但可以在单个进程中创建多个应用程序域)。

我认为您需要关闭其他服务,删除策略文件和新程序集,然后重新启动所有相关服务。

于 2009-05-01T17:04:29.183 回答