在asp.net Web应用程序中使用后无法删除托管dll

Geo*_*ton 5 c# asp.net iis unmanaged

我在ASP.net Web应用程序中使用NHunspell.NHunspell包装了Hunspellx86.dll或Hunspellx64.dll,这两个都是非托管的dll.

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

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

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

非常感谢!

Hun*_*rX3 0

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