最近在开发SharePoint 2013 Workflow。微软在SharePoint 2013中重新设计了Worfklow的架构,新的2013类型的workflow是纯声明性的。
然后在开发的时候,确遇到了一个匪夷所思的问题。步骤如下:
1. 开发了一个简单的workflow
2. 在VS中按F5部署到了SharePoint里。
3. 在一个文档上启动workflow实例,没有问题。
4. 在VS中修改workflow,重新部署。
5. 在文档上启动workflow实例
问题来了,新启动的workflow实例居然运行的还是旧的workflow定义,我的改动一点都没运行。。。。
尝试了各种办法,IISRESET,重启sharepoint timer,重新建SharePoint Site,查workflow,查SharePoint Log 等等,都不奏效。实在是百思不得其解。
在MSDN上,看到很多人遇到了同样的问题,感觉是微软的bug:
其中有一个人提出的解决方案,重启vssphost5.exe。
试了一下果然好用。。。
但是每次部署之前都杀进程还是麻烦些,又看到有人提供解决方法, 在部署之前,写一段脚本杀掉进程,把这段脚本放到“预先生成事件命令行”里。
http://stackoverflow.com/questions/19286924/sharepoint-2013-visual-studio-workflow-not-updating
命令为:
tasklist /FI "IMAGENAME eq vssphost5.exe" 2>NUL | find /I /N "vssphost5.exe">NUL
if "%ERRORLEVEL%"=="0" taskkill /f /im vssphost5.exe
exit 0