我有一個由兩個工作流程引用的自定義工作流程活動程序集。程序集目前的版本是1.0.builddate.revision。在CRM 2011中升級自定義工作流程活動程序集時出錯
我已經重新編譯了程序集的更新。它現在在1.1.builddate.revision。
根據我找到的信息here我相信由於我正在更改程序集版本中的次要編號,因此需要執行自定義工作流程活動的升級(而不是更新)。
我對升級的理解基本上是,我應該只註冊一個新程序集,然後將過程工作流指向自定義活動的新修訂版。
但是,當我嘗試註冊程序集(以編程方式)時,我得到一個FaultException,其中僅指出「無法插入重複鍵」。
System.ServiceModel.FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> was caught
Message=Cannot insert duplicate key.
Source=mscorlib
Action=http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/CreateOrganizationServiceFaultFault
StackTrace:
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Microsoft.Xrm.Sdk.IOrganizationService.Create(Entity entity)
at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.CreateCore(Entity entity)
at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.Create(Entity entity)
at PluginRegistrationTool.XrmService.Create(Entity entity) in C:\Workspaces\xxxxxx\Lib\PluginRegistrationTool\PluginRegistrationTool\XrmService.cs:line 390
InnerException:
我只能猜測這個故障指的是什麼關鍵。起初我以爲也許我試圖上傳程序集的一箇舊副本(可能仍然是v1.0.xx),但我可以通過Intellisense檢查我實際上正在上傳比現有程序更新版本的程序集在我試圖註冊的組織中。有關自定義活動程序集的所有內容都與AssemblyVersion編號相同。
我對這個過程沒有得到什麼?我不需要知道如何更新工作流以指向新程序集...我只是想知道如何成功地將更新後的自定義工作流活動程序集上傳到CRM。
試圖升級自定義工作流程活動程序集的代碼是this的稍微修改版本。該codeplex站點上的PluginRegistrationTool是CRM SDK附帶的PluginRegistrationTool的修改版本。此版本將PluginRegistrationTool轉換爲我在構建過程中使用的命令行實用程序。
我修改了this文件中的註冊功能,通過比較CRM中Assembly的AssemblyVersion編號的Major/Minor部分與我試圖上傳的程序集的版本號來處理更新與升級方案。我可以看到它正試圖升級(創建一個新的組件),但後來我得到我this文件前面提到的
organizationServiceProxy.Create(entity);
或線390碼之外。
需要注意的一件重要的事情是,我可以使用SDK中的GUI PluginRegistrationTool執行升級,而不是使用此命令行版本的工具。另外,如果我嘗試使用較舊版本的程序集在託管解決方案的頂部導入具有「升級」版本的自定義工作流程活動程序集的託管解決方案,則會得到相同的錯誤消息。
在此先感謝您的幫助!
您能否展示您用於註冊新版本和完整FaultException的代碼? – ccellar 2012-04-13 13:57:14
我已更新我的問題以包含例外信息。 – Paul 2012-04-13 14:37:33
我已更新我的問題以包含指向失敗代碼的鏈接。 – Paul 2012-04-13 15:02:02