2012-08-14 22 views
6

Sto cercando di utilizzare Windows Anteprima cache di Azure.Impossibile caricare il file o l'assembly Microsoft.ApplicationServer.Caching.Core

Ho un ruolo di cache worker dedicato, un webrole che utilizza la cache precedente e un ruolo di lavoro che aggiorna continuamente la cache.

ho seguito le instructions on the Windows Azure guide, ma ho ancora un errore:

Impossibile caricare il file o l'assembly 'Microsoft.ApplicationServer.Caching.Core, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una delle sue dipendenze. La definizione manifest di assembly individuato non corrisponde al riferimento all'assembly. (Eccezione da HRESULT: 0x80131040)

I doppie triple 1000000 dipendenze controllate, ci sono corretti. Ho notato che c'erano due serie di DLL: la versione 1.0.0.0 che voglio utilizzare e un'altra versione 101.0.0.0 che non desidero. Ho aggiunto l'istruzione BindingRedirect a tutti i miei file .config per mappare le versioni 101 a 1.0.0.0 Ho controllato la cartella \ bin, decompilato le DLL con Jetbrains, sono corrette. Comincio a perdere la pazienza. Perché .NET non prende la DLL che specifico quando inserisco il percorso esplicito?

+0

Ok, l'unico wai ho trovato per risolvere questo problema: cercare tutti i riferimenti del dll sul mio disco rigido e sostituirlo con la copia corretta. –

risposta

2

Ok ho trovato un altro modo: Ho appena rinominato C: \ Program Files \ Microsoft SDK \ Windows Azure.NET SDK \ 2012-06 \ ref \ Microsoft.ApplicationServer.Caching.Core.dll a Microsoft.ApplicationServer.Caching .Core.dll_old.

Era abbastanza per me.

Ecco una descrizione più specifica del problema: sembra funzionare perfettamente quando si prendono progetti individualmente: ho 3 ruoli di lavoro e un ruolo web. Ogni volta che costruisco il mio progetto uno per uno, vedo la DLL corretta nella directory di output, ho solo un problema con il pacchetto Windows Azure Cloud, sembra ignorare la direttiva BindingRedirect.

+0

Seleziona la risposta come * la * risposta (come quella http://meta.stackexchange.com/a/65088/173356), non elencherà più la domanda tra le domande senza risposta. – Seki

1

Solo un suggerimento per archiviare in un luogo pertinente.

Ho riscontrato il problema descritto nel questiuon, l'unica differenza è che non è stato possibile trovare Caching.Client anziché Caching.Core. Ho provato a rimuovere le librerie nella cartella ref SDK, come suggerito nella risposta precedente, ma non ha aiutato.

In ogni caso, la mia soluzione sembra essere piuttosto particolare.

Ciò che ha aiutato nel mio caso è che ho trovato alcune librerie a cui non è stato fatto riferimento, ma sono state trovate tra i pacchetti nell'unico ambiente in cui il mio progetto ha funzionato. Eccoli: * System.Web.Providers.1.1 * System.Web.Providers.Core.1.0

Essi sono stati mancati nel file di packages.config per qualche motivo, quindi non potevano essere rinnovati dai mangimi NuGet. Quindi potresti provare a fare riferimento a loro direttamente o in altro modo per renderli accessibili al progetto che stai tentando di eseguire.

1

AppFabric non è configurato per registrare le proprie DLL dopo l'installazione.

È necessario registrarli manualmente. Run questo in PowerShell per risolvere tutto:

Set-location "C:\Program Files\AppFabric 1.1 for Windows Server"    
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")    
$publish = New-Object System.EnterpriseServices.Internal.Publish    
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.ApplicationServer.Caching.Core.dll") 
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.ApplicationServer.Caching.Client.dll") 
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.WindowsFabric.Common.dll") 
$publish.GacInstall("C:\Program Files\AppFabric 1.1 for Windows Server\Microsoft.WindowsFabric.Data.Common.dll")    
iisreset 
Problemi correlati