Workflow 为什么我们需要在使用插件注册工具注册自定义工作流后重新启动CRM服务器以使其正常工作

Workflow 为什么我们需要在使用插件注册工具注册自定义工作流后重新启动CRM服务器以使其正常工作,workflow,dynamics-crm,dynamics-crm-4,workflow-activity,Workflow,Dynamics Crm,Dynamics Crm 4,Workflow Activity,我们是否有其他方法可以使自定义工作流活动在工作流步骤中运行 我一直在做的就是使用插件注册工具注册dll,然后重新启动服务器。然后,只有我们可以在工作流上使用自定义工作流活动 我已经尝试重新启动IIS,并希望这样做,但没有运气 始终重新启动服务器不应该是任何解决方案。有没有别的办法,请提出建议。非常感谢您的建议。我们不需要重新启动服务器以使其运行插件代码,唯一的问题是您需要在之后重新启动IIS。尝试重新启动IIS,然后重新启动异步服务,这必须是唯一必要的。CRM缓存DLL,重新启动服务会使其刷新这

我们是否有其他方法可以使自定义工作流活动在工作流步骤中运行

我一直在做的就是使用插件注册工具注册dll,然后重新启动服务器。然后,只有我们可以在工作流上使用自定义工作流活动

我已经尝试重新启动IIS,并希望这样做,但没有运气


始终重新启动服务器不应该是任何解决方案。有没有别的办法,请提出建议。非常感谢您的建议。

我们不需要重新启动服务器以使其运行插件代码,唯一的问题是您需要在之后重新启动IIS。

尝试重新启动IIS,然后重新启动异步服务,这必须是唯一必要的。

CRM缓存DLL,重新启动服务会使其刷新这些缓存

如果注册同步插件,则需要重置IIS

如果注册异步插件或自定义工作流活动,则需要重置异步服务。

1)无需重新启动IIS;使用以下命令重新启动应用程序池(速度快得多,并且不会中断服务器上可能正在运行的其他应用程序;默认情况下,其名称为“crmappool”):

%systemroot%\system32\inetsrv\appcmd recycle apppool CrmAppPool
2) 类似地,您可以通过运行(powershell)来回收异步进程:

3) 这两个命令都可以使用powershell命令远程运行:

powershell Invoke-Command [CrmServerName] -ScriptBlock { ["Restart-Service...."] }
4) 您不需要部署到服务器来调试插件。创建测试线束更容易/更快。下面的链接概述了如何为单元测试设置开发环境


这里的要点非常具体-

这不仅适用于CRM,也适用于托管在IIS上的任何web应用程序。Web App(CRM for Your case)在执行消息时第一次缓存DLL(插件消息/事件-尽管这是由.net平台内部完成的,以便更有效地处理其他类似调用)。因此,在这种情况下,您需要从web应用程序中清除同步的内容。这就是为什么您需要回收应用程序池(SMART WAY->对于单个应用程序刷新,并且在不影响服务器上的其他应用程序的情况下,您应该始终进行应用程序池回收,而不是重新启动IIS。)

为此,我建议您编写一个powershell脚本,为您的应用程序回收AppPool,并在VS中的项目(插件项目)构建后事件中触发它。这样,您的过程将自动化,并且您的工作量将大大减少

关于自定义WF程序集,因为它在异步下执行。服务,所以您也需要从这里丢弃缓存的内容


希望这有帮助

您不需要重新启动任何东西

您需要做的是在每次部署程序集时增加要更新的程序集的内部版本号


这确保CRM知道不使用其缓存版本,而是将更新版本加载到数据库中

如果您想查看CWAs而不需要重新启动,只需在插件注册工具中选择活动,然后按属性下方的“保存”按钮

Hi@Indranil,在回答之前我看不到您的帖子,但最好还是重启异步服务
powershell Invoke-Command [CrmServerName] -ScriptBlock { ["Restart-Service...."] }