我在C#ASP.NET Web服务中使用本机DLL(FastImage.dll),有时会锁定(无法删除它 - 表示拒绝访问);这需要停止IIS以删除DLL。无法在我发布的Web服务的bin文件夹中删除此DLL,这使我无法成功发布(即使它认为它已成功发布!),这使得开发和修复错误很困难(特别是当它自己运行时很乐意运行旧代码)更改可能不会反映在服务器上!)。请注意,导致Web服务炸弹和锁定DLL的错误在我的代码中,这是在所述DLL之外,因此我认为这是一个比FreeImage库更常见的问题(不会给它带来任何热量)。
答案 0 :(得分:2)
使用IISReset命令行工具只会在本地计算机上重新启动IIS,而不会在要发布的远程服务器上重新启动。
假设您要发布到Windows 2003服务器,我建议尝试在网站或运行Web服务的虚拟文件夹中停止并重新启动IIS AppPool的步骤稍微不那么激烈。 (这样您就不会将目标服务器上运行的所有站点都脱机。)这也假设Web服务在其自己的应用程序池中运行。理想情况下它应该是,所以你要保持隔离。
我建议您不要使用发布过程并考虑使用Web部署项目。以下是ScottGu博客详细介绍VS 2005 Web Deployment Projects的帖子。
Web部署项目方法的优势在于它为您提供了MSbuild的所有功能和能力,因为它实际上只是MSBuild的一个便利包装器。以下是MSBuild团队关于pre-build and post-build capabilities
的帖子希望这有帮助。
答案 1 :(得分:0)
您可以使用IISReset命令行工具来停止/重新启动iis。因此,您可以编写一个简单的批处理文件来停止iis,复制文件,然后重新启动iis。我不知道如何将其与VS发布功能集成。