已解决-请参阅下面的更新...
- 我在单独的工作流活动项目中创建了活动
- 在我的 SharePoint 项目中,我添加了对活动项目的引用
- 我还将活动项目的输出包含到 SharePoint 包中(部署到 GAC)
- 接下来在我的 SharePoint 项目中,我创建了一个预部署 msbuild 操作,以将我的活动 dll 复制到工作流管理器目录(活动和 WFWebRoot\bin)。
- 当然我也在两个相关目录中放了一个“AllowedTypes.xml”。
- 我没有自动重新启动工作流管理器后端服务。我相信我只需要在 .xml 文件发生更改时重新启动它,对吧?或者任何时候我的活动.dll 发生变化?
现在我的问题是我无法调试我的工作流 CodeActivity。工作流工作正常并附加到 workflow.servicehost.exe 我可以在 Visual Studio 中调试我的工作流 - 它会在任何声明性工作流活动上命中断点。不幸的是,我的自定义 CodeActivity 中的任何断点都没有被击中:(
任何想法?显然,我在同一台机器上运行了 SharePoint 和 Workflow Manager。我不确定为什么需要将活动 dll 部署到 GAC - 和 iisreset?!(见这篇技术网文章)
更新:一些经验教训......
- 在部署之前停止 WorkflowServiceBackend(我正在使用构建事件)。
- 在部署后事件上再次启动 WorkflowServiceBackend。
否则,工作流服务可能会阻止对 GAC 的活动程序集的访问,并且不会被替换。它发生在我身上。现在,您(应该)知道任何 GAC 程序集总是比任何“本地”程序集更受欢迎。显然工作流服务使用了我的 GAC 程序集——我还需要将我的活动程序集复制到 artifcats 和 wfwebroot\bin 吗?不。我从工作流管理器目录中删除了我的 dll,我仍然能够毫无问题地执行和调试我的工作流活动。