2012-03-12 54 views
5

我在一个ASP.net web应用程序中使用NHunspell。 NHunspell包装Hunspellx86.dll或Hunspellx64.dll,这两者都是非托管dll。在asp.net web应用程序中使用它后无法删除托管dll

问题是这样的:当我处理我的NHunspell对象(调用来自kernel32.dllFreeLibrary)的,似乎IIS仍挂在它 - 双方的WinDbg和tasklist /m证明。如果我尝试使用自动构建过程来替换该dll,或者运行安装程序更新我的Web应用程序,则这是有问题的:因为该dll正在使用,所有内容都会失败。

我想知道是否有人可以证实我的怀疑,事实上,它正在缓存它?另外,为什么我可以从IIS下删除托管dll(即使tasklist报告了IIS使用的那些dll)?

最后,我正在寻找关于如何才能删除此dll以进行自动化构建/安装的建议?

非常感谢!

+1

我猜想矫枉过正的选项是围绕构建的这些部分的'iisadmin/stop'和'iisadmin/start' - 假设您的构建运行时具有足够的权限。 – Rup 2012-03-13 17:21:45

+0

也有你试过[Sysinternals Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653)?您可以执行对DLL名称的句柄搜索,并确切了解哪些进程仍然保留在DLL - IIS核心服务或应用程序池中。虽然这可能不会告诉你任何新东西。 – Rup 2012-03-14 10:21:15

+0

我们有这个完全相同的问题。 – 2012-05-09 14:42:55

回答

0

如果您在IIS 6或更高版本上运行,则可以停止特定的应用程序池。但是,确切的构建命令不覆盖文件是什么?我们使用TFS构建自动化步骤将我们的文件复制到运行IIS的测试服务器上,该服务器使用了所有的dll,这是没有问题的。我无法确认的是它是如何做到的,我怀疑它是使用XCOPY,但我无法确定。

+0

是的,我们也使用TFS构建自动化步骤 - 这是失败的一步。 – 2012-03-14 14:00:03

相关问题