我有多个服务从GAC提取程序集。当我安装其中一个服务时,它将使用由各种服务共享的新程序集更新GAC,并将新策略文件插入GAC,以便所有先前版本查找新程序集。所有服务都可以在不重新启动服务的情况下获取策略并完美地使用新程序集。问题和问题出现在我回滚此版本时,卸载程序集和策略并重新启动与安装新程序集相关的服务。显然,重新启动的服务会在GAC中获取先前版本的程序集。但是,使用此程序集的服务器上运行的其他服务仍然从策略文件绑定到程序集的新版本。我的问题是:
绑定是否像缓存一样最终会释放它并在旧程序集上重新启动?或者它会保持绑定直到服务重新启动?
如果需要重新启动,除了找到使用此程序集的所有服务并重新启动这些服务,或者重新启动服务器本身以移除对已从GAC中删除的程序集的盲注之外,还有吗?
答案 0 :(得分:1)
在关闭应用程序域之前,.NET运行时不会卸载程序集(通常在进程退出但可以在单个进程中创建多个应用程序域时)。
我认为您需要关闭其他服务,删除策略文件和新程序集,然后重新启动所有相关服务。