我们可以有任何替代方法来使工作流程步骤中的自定义工作流程活动可运行。
我所做的一直是使用插件注册工具注册 dll,然后重新启动服务器。然后只有我们可以在 Workflow 上使用自定义的工作流活动。
我在重新启动 IIS 并希望它会完成但没有运气后尝试过。
一直重启服务器不应该是任何解决方案。有没有其他方法可以请建议。您的所有建议将不胜感激。
我们可以有任何替代方法来使工作流程步骤中的自定义工作流程活动可运行。
我所做的一直是使用插件注册工具注册 dll,然后重新启动服务器。然后只有我们可以在 Workflow 上使用自定义的工作流活动。
我在重新启动 IIS 并希望它会完成但没有运气后尝试过。
一直重启服务器不应该是任何解决方案。有没有其他方法可以请建议。您的所有建议将不胜感激。
1)不需要重启IIS;使用以下命令重新启动应用程序池(它的速度要快得多,并且不会中断可能在服务器上运行的其他应用程序;默认情况下它是“CrmAppPool”):
%systemroot%\system32\inetsrv\appcmd recycle apppool CrmAppPool
2)同样可以通过运行(powershell)来回收异步进程:
Restart-Service -displayname "Microsoft Dynamics CRM Asynchronous Processing Service"
3)这两个命令都可以使用powershell命令远程运行:
powershell Invoke-Command [CrmServerName] -ScriptBlock { ["Restart-Service...."] }
4)您不需要部署到服务器来调试插件。创建测试工具更容易/更快。下面的链接概述了如何为单元测试设置开发环境。
CRM 缓存 dll,重新启动服务会导致它刷新这些缓存。
如果您注册了一个同步插件,那么您需要重置 IIS。
如果您注册异步插件或自定义工作流活动,则需要重置异步服务。
我们不需要重新启动服务器来使其运行插件代码,唯一的事情是您需要重新启动 IIS 之后。
尝试重新启动 IIS,然后重新启动异步服务,这必须是唯一需要的。
您不需要重新启动任何东西。
您需要做的是在每次部署时增加要更新的程序集的内部版本号。
这确保 CRM 知道不使用它的缓存版本,而是将更新后的版本加载到数据库中
如果您想在不需要重新启动的情况下查看 CWA,只需在插件注册工具中选择活动,然后按属性下方的“保存”按钮
这里的重点非常具体——
这不仅适用于 CRM,也适用于托管在 IIS 上的任何 Web 应用程序。Web App(适用于您的情况下的 CRM)在消息执行时第一次缓存 dll(插件消息/事件 - 尽管这是由 .net 平台在内部完成的,因此可以更有效地处理其他类似的调用。)。因此,在这种情况下,您需要从 Web 应用程序中清除同步的内容。这就是为什么您需要回收应用程序池的原因(SMART WAY -> 对于单个应用程序刷新,并且不影响服务器上的其他应用程序,您应该始终使用 APPPOOL Recycle 而不是重新启动 IIS。)
为此,我建议您编写一个 powershell 脚本来为您的应用程序回收 AppPool 并在 VS 中的项目(插件项目)的 Post build 事件中触发它。因此,这将使您的流程自动化,并将减少您的工作量。
关于自定义 WF 程序集,因为它在 Async 下执行。服务,因此您还需要从此处丢弃缓存的内容。
希望这可以帮助!