我在一个ASP.net web应用程序中使用NHunspell。 NHunspell包装Hunspellx86.dll或Hunspellx64.dll,这两者都是非托管dll。在asp.net web应用程序中使用它后无法删除托管dll
问题是这样的:当我处理我的NHunspell对象(调用来自kernel32.dll
FreeLibrary
)的,似乎IIS仍挂在它 - 双方的WinDbg和tasklist /m
证明。如果我尝试使用自动构建过程来替换该dll,或者运行安装程序更新我的Web应用程序,则这是有问题的:因为该dll正在使用,所有内容都会失败。
我想知道是否有人可以证实我的怀疑,事实上,它正在缓存它?另外,为什么我可以从IIS下删除托管dll(即使tasklist
报告了IIS使用的那些dll)?
最后,我正在寻找关于如何才能删除此dll以进行自动化构建/安装的建议?
非常感谢!
我猜想矫枉过正的选项是围绕构建的这些部分的'iisadmin/stop'和'iisadmin/start' - 假设您的构建运行时具有足够的权限。 – Rup 2012-03-13 17:21:45
也有你试过[Sysinternals Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)?您可以执行对DLL名称的句柄搜索,并确切了解哪些进程仍然保留在DLL - IIS核心服务或应用程序池中。虽然这可能不会告诉你任何新东西。 – Rup 2012-03-14 10:21:15
我们有这个完全相同的问题。 – 2012-05-09 14:42:55