Sto cercando di capire un modo per aggiornare assiemi utilizzati dal nostro runtime worklow (attività personalizzate) pur essendo in grado di caricare (deserializzare) vecchi casi. La mia situazione è simile a questo:Caricamento precedenti flussi di lavoro della versione con la nuova versione di assemblaggio
- hanno un flusso di lavoro creato e insistette con
CustomActivities
v.1.0.0.0 - distribuire una nuova versione del prodotto ha strega
CustomActivities
v.2.0.0.0 - cercare di caricare i flussi di lavoro precedenti nel nuovo runtime
La differenza tra v.1 e v.2 è che nell'assembly sono presenti alcune classi aggiuntive. La struttura per i tipi esistenti non è cambiata, quindi supponevo che la deserializzazione binaria continuasse a funzionare. Noi stiamo reindirizzando tutti i tipi di v.1 a v.2 utilizzando AssemblyResolve
evento
if (args.Name.Contains("CustomActivities"))
{
Type someTypeFromCustomActivities = typeof(WorkflowType);
return someTypeFromCustomActivities.Assembly;
}
Eppure ad un certo punto durante il processo di deserializzazione stiamo ottenendo la seguente eccezione:
SerializationException: L'oggetto con L'ID 153 implementa l'interfaccia IObjectReference per la quale non è possibile risolvere tutte le dipendenze. La causa probabile sono due istanze di IObjectReference che hanno una reciproca dipendenza l'una dall'altra.
cosa potrebbe causare questo comportamento e come possiamo lavorare intorno ad esso? Anche se qualcuno ha una strategia per l'aggiornamento di flussi di lavoro che non comporta lato correre da assemblee laterali (vecchie e nuove versioni dello stesso dominio applicazione) sarebbero stati accolti.
Questo blog dice: > Verificare se è stato modificato il flusso di lavoro (creato qualche nuovo stato, per esempio), in tal caso verificare se il database di persistenza ha alcun persistito flusso di lavoro in esso. se ha il tuo problema potrebbe essere lì perché il flusso di lavoro non può essere serializzato di nuovo. > @AZ Potrebbe essere il tuo caso? http://brazeta.wordpress.com/2012/01/12/vs-2010-test-assert-inconclusive-exception/ – sethcall
la struttura di classe/flusso di lavoro non è cambiato un po '. Inoltre non posso semplicemente cancellare i dati persistenti perché ciò significherebbe perdo workflow di produzione attivi –