4

2つのワークフローによって参照されるカスタムワークフローアクティビティアセンブリがあります。アセンブリは現在バージョン1.0.builddate.revisionです。

アセンブリの更新を再コンパイルしました。現在、1.1.builddate.revisionにあります。

ここで見つけた情報に基づいて、アセンブリバージョンでマイナー番号を変更しているため、カスタムワークフローアクティビティのアップグレード(更新ではない)を実行する必要があると思います。

アップグレードについての私の理解は、基本的に、新しいアセンブリを登録してから、プロセスワークフローをカスタムアクティビティの新しいリビジョンに向ける必要があるということです。

ただし、アセンブリを(プログラムで)登録しようとすると、「重複キーを挿入できません」という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に正常にアップロードする方法を知りたいだけです。

カスタムワークフローアクティビティアセンブリをアップグレードしようとしているコードは、これを少し変更したバージョンです。そのcodeplexサイトのPluginRegistrationToolは、CRMSDKに付属しているPluginRegistrationToolの修正バージョンです。このバージョンは、PluginRegistrationToolをビルドプロセスで使用しているコマンドラインユーティリティに変えます。

CRMのアセンブリのAssemblyVersion番号のメジャー/マイナー部分を、アップロードしようとしているアセンブリのバージョン番号と比較することにより、更新とアップグレードのシナリオを処理するように、このファイルの登録機能を変更しました。アップグレード(新しいアセンブリの作成)を試みていることがわかりますが、前述の例外が発生します。

organizationServiceProxy.Create(entity);

または、このファイルのコードの390行目。

注意すべき重要な点の1つは、このコマンドラインバージョンのツールではなく、SDKのGUIPluginRegistrationToolを使用してアップグレードを実行できることです。また、古いバージョンのアセンブリを使用する管理対象ソリューションの上に、「アップグレードされた」バージョンのカスタムワークフローアクティビティアセンブリを使用する管理対象ソリューションをインポートしようとすると、同じエラーメッセージが表示されます。

よろしくお願いします!

4

2 に答える 2

2

既存のアセンブリのアセンブリ ID を渡して、新しいアセンブリを作成していました。を呼び出したときに、これにより重複キー例外が発生していましたproxy.Create()。アセンブリ エンティティの assemblyid プロパティに新しい Guid を割り当てると、proxy.Create()関数呼び出しは正常に機能しました。

これについて助けてくれてありがとう!

于 2012-04-20T21:56:13.720 に答える
1

キーでアセンブリに署名するのを忘れると、このエラーが発生するのを見てきました。プロジェクトのプロパティに移動し、署名されていることを確認します。そうでない場合は、アセンブリの登録を解除してから、署名されたアセンブリを登録すると、そこから更新が機能するはずです。

于 2012-04-13T20:58:17.253 に答える