我在 ASP.net web 应用程序中使用 NHunspell。 NHunspell 包装了 Hunspellx86.dll 或 Hunspellx64.dll,它们都是非托管 dll。
问题是这样的:当我处理我的 NHunspell 对象(它从 kernel32.dll
调用 FreeLibrary
)时,似乎 IIS 仍然卡在它上面 - windbg 和 tasklist/m
都证明了这一点。如果我尝试使用自动构建过程替换那个 dll,或者运行安装程序来更新我的 Web 应用程序,这就会有问题:一切都失败了,因为那个 dll 正在使用中。
我想知道是否有人可以证实我的怀疑,实际上是 IIS 缓存了它?另外,为什么我可以直接从 IIS 下删除托管 dll(即使 tasklist
报告 IIS 使用的那些 dll)?
最后,我正在寻找有关如何实际删除此 dll 以进行自动构建/安装的建议?
非常感谢!
最佳答案
如果您在 IIS 6 或更高版本上运行,您可以停止特定的应用程序池。但是,不覆盖文件的确切构建命令是什么?我们使用 TFS 构建自动化步骤将我们的文件复制到运行 IIS 的测试服务器,该服务器具有所有正在使用的 dll,这没有问题。我无法确认它是如何做到的,我怀疑它正在使用 XCOPY,但我不能确定。
关于c# - 在 asp.net web 应用程序中使用后无法删除托管 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674767/