2012-02-14 9 views
8

Ho implementato un flusso di lavoro personalizzato in Visual Studio 2010 utilizzando CRM 2011 Developer Toolkit. Funzionava bene con lo spazio dei nomi generato dal sistema. Ma, quando ho cambiato lo spazio dei nomi del mio progetto, ha generato un errore "Errore nella registrazione di plug-in e/o flussi di lavoro .. L'assembly plug-in non contiene i tipi richiesti o il contenuto dell'assembly non può essere aggiornato." durante la distribuzione. E ho cambiato lo spazio dei nomi nel file .crmregister, nelle proprietà del progetto e nel codice sorgente. Allora qual è il problema qui?Errore nella registrazione di plugin e/o flussi di lavoro. L'assembly plug-in non contiene i tipi richiesti o il contenuto dell'assembly non può essere aggiornato

risposta

11

Se si distribuiscono i flussi di lavoro di custome tramite toolkit e pacchetto di sviluppo di CRM e successivamente, se è stato modificato qualsiasi nome di classe o spazio dei nomi, è necessario modificare manualmente il file RegisterFile.crmregister in quanto Visual Studio non lo fa automaticamente. Quindi, se si cambia il nome della classe da A a B e lo spazio dei nomi da N a M poi 'TypeName' dal xml di seguito nel file di RegisterFile.crmregister deve essere il seguente:

<?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> 
1

Provare a modificare la versione dell'assieme.

+1

Errore uguale –

+0

Ho avuto lo stesso errore. Quando ho modificato la versione dell'assieme in modo che corrispondesse esattamente a quella distribuita, alla fine ha funzionato. –

1

Stai facendo riferimento a qualsiasi altro assembly (come Microsoft.Xrm.Sdk)? Se è così, devono essere uniti usando uno strumento come ILMerge se si sta eseguendo la distribuzione nel database. Se si sta eseguendo la distribuzione su disco, è necessario che siano presenti nella cartella assembly o installati nel GAC.

+0

Sì. Sto usando Microsoft.Xrm.Sdk, Microsoft.Xrm.Sdk.Query e Microsoft.Xrm.Sdk.Workflow. E cosa mi serve per unire ...? Puoi darmi una sintassi per fonderlo ...? Non sono a conoscenza di ILMerge. –

+0

Questo dovrebbe coprirlo. http://blogs.msdn.com/b/crm/archive/2010/11/09/how-to-reference-assemblies-from-plug-ins.aspx –

0

Annullare la registrazione del plug-in, quindi registrarlo di nuovo.

+0

Durante la registrazione solo ottenendo questo errore in Developer toolkit .. –

1

Potrebbe essere necessario verificare se il plug-in con lo stesso nome esiste come plug-in registrato nell'organizzazione. Annullare la registrazione del plug-in, registrare l'assembly e ripetere i passaggi.

1

Se si dispone di alcune classi generate automaticamente, ad es. I plugin che avevi creato facendo clic con il tasto destro del mouse su Crea plug-in e dopo averlo eliminato, devi ripulire le sue tracce in RegisterFile.crmregister. Se era un plugin, è necessario cancellare un intero ramo con il suo nome.

7

Ho appena incontrato lo stesso problema esatto mentre giocherellando con il CRM Toolkit.

Ecco come ho risolto il problema:

  1. passare a Impostazioni/Soluzioni/Yoursolution in CRM
  2. Eliminare le voci di elaborazione dei messaggi SDK relativi al montaggio Plugin
  3. Eliminare il gruppo plugin stesso da la soluzione
  4. ritornare a Visual Studio e distribuire

io non ha dovuto manualmente ed è tutto

1

Ciò può accadere se si modifica/rifatta il nome della classe principale del proprio plug-in. (ad esempio quando l'analisi del codice si lamenta di avere un errore di ortografia ed a risolvere il problema) Questo problema viene visualizzata solo la prossima volta che si esegue il deploy

Quindi, se hai chnaged il nome della classe del plugin ...

  1. nella soluzione CRM predefinito eliminare il plugin da "Plugin-in assemblee"
  2. Guardate nel RegisterFile.file crmregister del tuo plugin. sul tag XML vedrai 3 riferimenti al nome della tua classe - alcuni di questi potrebbero non essere stati aggiornati.
  3. aggiornare i nomi in questo file e ridistribuire.

terminato.

(ok appena notato Masoud Ghabachi parlato di questo tempo fa ...)

0

parte dei casi di cui sopra, controllare .snk file o file pfx. Cambia nella tua seconda implementazione.

in questo caso provare a utilizzare il vecchio codice sorgente oppure è necessario registrare nuovamente la spina/il flusso di lavoro.

0

Assicurarsi che la classe del plugin/flusso di lavoro sia di classe pubblica.

Ho ricevuto lo stesso errore perché la mia classe di plug-in era privata.

0

Controllare la proprietà del flusso di lavoro RegisterFile.crmregister TypeName non deve contenere spazi.

0

Ho modificato il file della chiave di firma e ho ricevuto l'errore, la modifica al file chiave precedente ha risolto il problema per me.

0

La versione deve essere la stessa di quella già pubblicata per un aggiornamento. Avevamo una versione Assembly di 1 maggiore, 0 minore - e quella che abbiamo provato a pubblicare era 12 major, 0 minorenne.

Abbiamo cambiato il numero di soluzione di Visual Studio alla versione 1.0.0.0, Build, Load Assembly, Update - e ha funzionato!

L'eliminazione NON risolverebbe il problema a causa delle dipendenze dei flussi di lavoro se fossero utilizzati.

Abbiamo attivato Tracing On e trovato lo script SQL per trovare il colpevole.

0

Ho ottenuto questo quando l'elemento preImage è stato inserito dopo l'elemento postImage nel registro. Scambiare i loro posti lo ha risolto.

+0

Potresti per favore elaborare più la tua risposta aggiungendo un po 'più di descrizione della soluzione che fornisci? – abarisone

3

Nel nostro caso abbiamo utilizzato ILMerge e accidentalmente abbiamo unito Microsoft.Xrm.Sdk.dll nel nostro plugin, rimuovendo questa dll (copy local = false) risolto il problema.

questa DLL risultante dalla fusione non funzionava comunque come si gettano le regole di sicurezza eccezione di eredità di sicurezza violati, mentre l'override membro: 'Microsoft.IdentityModel.Claims.ClaimsIdentity.System.Runtime.Serialization.ISerializeable.GetObjectData questo GetObjectData era presente in Microsoft.Xrm .Sdk.dll quindi eccezione di sicurezza dalla distribuzione SandBox.