web-dev-qa-db-ja.com

プラグインやワークフローの登録中にエラーが発生しました。プラグインアセンブリに必要なタイプが含まれていないか、アセンブリの内容を更新できません

CRM 2011 Developer Toolkitを使用して、Visual Studio2010に1つのカスタムワークフローを実装しました。システムで生成された名前空間で正常に機能していました。しかし、プロジェクトの名前空間を変更すると、エラーがスローされます プラグインやワークフローの登録中にエラーが発生しました。プラグインアセンブリに必要なタイプが含まれていないか、アセンブリの内容を更新できません。」 それを展開している間。また、.crmregisterファイル、プロジェクトプロパティ、およびソースコードの名前空間を変更しました。では、ここでの問題は何ですか。

9
Charan Raju C R

CRM開発ツールキントとパッケージを介してカスタムワークフローにデプロイし、その後、クラス名または名前空間を変更した場合は、Visual Studioでは行われないため、RegisterFile.crmregisterファイルを手動で変更する必要があります。したがって、クラス名をAからBに変更し、名前空間をNからMに変更する場合、RegisterFile.crmregisterファイルの以下のxmlの「TypeName」は次のようになります。

 <?xml version="1.0" encoding="utf-8"?>
<Register xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.Microsoft.com/crm/2011/tools/pluginregistration">
  <Solutions>
    <Solution Assembly="PackageECRProcesses.CleanRegistration.dll" Id="ab72673b-c0a8-e111-af82-080027dd322f" IsolationMode="None" SourceType="Database">
      <WorkflowTypes>
        <WorkflowType FriendlyName="any" Name="any" Description="any." WorkflowActivityGroupName="account" Id="f0e3f436-c1a8-e111-af82-080027dd322f" TypeName="M.B" />
      </WorkflowTypes>
    </Solution>
  </Solutions>
  <XamlWorkflows />
</Register>
11
patricgh

この場合、ILMergeを使用しましたが、誤ってMicrosoft.Xrm.Sdk.dllをプラグインにマージし、このdllを削除(コピーlocal = false)して問題を修正しました。

このマージされたdllは、セキュリティ例外をスローするため、とにかく機能していませんでした

メンバーのオーバーライド中に継承セキュリティルールに違反しました: 'Microsoft.IdentityModel.Claims.ClaimsIdentity.System.Runtime.Serialization.ISerializeable.GetObjectData

このGetObjectDataはMicrosoft.Xrm.Sdk.dllに存在していたため、SandBoxの展開によるセキュリティ例外が発生しました。

8
Serge

CRM Toolkitをいじっているときに、まったく同じ問題が発生しました。

これが私が問題を解決した方法です:

  1. CRMの設定/ソリューション/ソリューションに移動します
  2. プラグインアセンブリに関連するSDKメッセージ処理エントリを削除します
  3. プラグインアセンブリ自体をソリューションから削除します
  4. VisualStudioに戻って展開します

手動で編集する必要はありませんでした。

7
Alex

組織に登録されているプラ​​グインと同じ名前のプラグインが存在するかどうかを確認する必要がある場合があります。プラグインの登録を解除し、アセンブリと手順を再度登録します。

1
Nithin Paul

これは、プラグインのメインクラス名を変更/リファクタリングした場合に発生する可能性があります。 (例:コード分析でスペルミスがあり、それを修正した場合)この問題は、次にデプロイを行うときにのみ発生します

したがって、プラグインクラスの名前を変更した場合は...

  1. デフォルトのCRMソリューションで、「プラグインアセンブリ」からプラグインを削除します
  2. プラグインのRegisterFile.crmregisterファイルを調べます。 XMLタグには、クラス名への3つの参照が表示されます。これらの一部は更新されていない可能性があります。
  3. このファイルの名前を更新して、再デプロイします。

完了しました。

(MasoudGhabachiがこれについて何年も前に言及したことに気づきました...)

1
Phil

他のアセンブリ(Microsoft.Xrm.Sdkなど)を参照していますか?その場合、データベースにデプロイする場合は、 ILMerge などのツールを使用してマージする必要があります。ディスクにデプロイする場合は、それらもAssemblyフォルダーに存在するか、GACにインストールされている必要があります。

1
Jason Lattimer

アセンブリのバージョンを変更してみてください。

1
paramosh

自動生成されたクラスがある場合、たとえば[プラグインの作成]を右クリックして作成したプラグインを削除した場合は、RegisterFile.crmregisterのトレースをクリーンアップする必要があります。プラグインの場合は、その名前のブランチ全体を削除する必要があります。

1
Arthur

お使いのバージョンは、アップグレード用にすでに公開されているものと同じである必要があります。アセンブリバージョンはメジャー1、マイナー0で、公開しようとしたのはメジャー12、マイナー0でした。

Visual Studioソリューション番号をバージョン1.0.0.0、ビルド、ロードアセンブリ、更新に戻しました-そしてそれは機能しました!

ワークフローを使用した場合、ワークフローからの依存関係があるため、削除しても問題は解決しません。

トレースをオンに切り替え、SQLスクリプトを見つけて原因を見つけました。

0
riaandl

プラグイン/ワークフロークラスがパブリッククラスであることを確認してください。

プラグインクラスがプライベートだったため、同じエラーが発生しました。

0
Scorpion

署名キーファイルを変更してエラーが発生しました。以前のキーファイルに戻すと、問題が解決しました。

0
Lily Shita

RegisterFile.crmregisterワークフロープロパティTypeNameにスペースを含めないでください。

0
Andrius Cyvas

これは、レジスタのpostImage要素の後にpreImage要素が配置されたときに取得しました。彼らの場所を交換することはそれを修正しました。

0
mswaim

上記の場合とは別に、.snkファイルまたは.pfxファイルを確認してください。 2回目の展開で変更されますか?.

この場合、古いソースコードを使用してみてください。そうしないと、プラグ/ワークフローを再登録する必要があります。

0
M2012

プラグインの登録を解除してから、再度登録してください。

0
Anwar