2014-07-03 13 views
5

Ho creato una semplice applicazione C# in Visual Studio e provo a eseguirla dal mio computer locale. Ho studio visivo 2013. Tuttavia, quando provo a eseguire il programma, ottengo l'eccezione: Impossibile caricare il file o l'assembly 'Microsoft.Data.OData, Versione = 5.6.0.0, Cultura = neutroImpossibile caricare l'assembly 'Microsoft.Data.OData' durante l'accesso a Archiviazione di Azure durante lo sviluppo

Ho anche provato la soluzione menzionata qui: Could not load file or assembly Microsoft.Data.OData Version=5.2.0.0 error in Azure Cloud Worker Role using Table Storage

che è quello di aggiungere quanto segue al mio file di configurazione:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Ma ancora non ha funzionato. Non so se dovrei cambiare qualcosa alle versioni di quel testo.

La linea che genera l'eccezione è:

CloudTableClient client = storageAccount.CreateCloudTableClient(); 

ho scaricato anche il pacchetto: http://www.nuget.org/packages/Microsoft.Data.Services.Client/ come detto Missing Microsoft.Data.Services.Client version 5.6 on Azure Websites. Tuttavia il programma di installazione mi ha informato che ho già la versione 5.6.1.0 del file e non succede nulla.

Microsoft.WindowsAzure.Storage.StorageException was unhandled HResult=-2146233088 Message=Could not load file or assembly 'Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Source=Microsoft.WindowsAzure.Storage StackTrace: 
     at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) 
     at Microsoft.WindowsAzure.Storage.Table.TableOperation.Execute(CloudTableClient client, CloudTable table, TableRequestOptions requestOptions, OperationContext operationContext) 
     at Microsoft.WindowsAzure.Storage.Table.CloudTable.Execute(TableOperation operation, TableRequestOptions requestOptions, OperationContext operationContext) 
     at UserConsoleProject2.Program.connectionAzureStorage() in c:\Users\user\Documents\Visual Studio 2013\Projects\UserConsoleProject2\UserConsoleProject2\Program.cs:line 42 
     at UserConsoleProject2.Program.Main(String[] args) in c:\Users\user\Documents\Visual Studio 2013\Projects\UserConsoleProject2\UserConsoleProject2\Program.cs:line 419 InnerException: System.IO.FileLoadException 
     HResult=-2146234304 
     Message=Could not load file or assembly 'Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
     Source=Microsoft.WindowsAzure.Storage 
     FileName=Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
     FusionLog==== Pre-bind state information === LOG: DisplayName = Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 (Fully-specified) LOG: Appbase = file:///C:/Users/user/Documents/Visual Studio 2013/Projects/UserConsoleProject2/UserConsoleProject2/bin/Debug/ LOG: Initial PrivatePath = NULL Calling assembly : Microsoft.WindowsAzure.Storage, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35. 
=== LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\user\Documents\Visual Studio 2013\Projects\UserConsoleProject2\UserConsoleProject2\bin\Debug\UserConsoleProject2.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Post-policy reference: Microsoft.Data.OData, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 LOG: Attempting download of new URL file:///C:/Users/user/Documents/Visual Studio 2013/Projects/UserConsoleProject2/UserConsoleProject2/bin/Debug/Microsoft.Data.OData.DLL. WRN: Comparing the assembly name resulted in the mismatch: Build Number ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

     StackTrace: 
      at Microsoft.WindowsAzure.Storage.Table.Protocol.TableOperationHttpWebRequestFactory.BuildRequestForTableOperation(Uri uri, UriQueryBuilder builder, IBufferManager bufferManager, Nullable`1 timeout, TableOperation operation, Boolean useVersionHeader, OperationContext ctx, TablePayloadFormat payloadFormat, String accountName) 
      at Microsoft.WindowsAzure.Storage.Table.TableOperation.<>c__DisplayClass18.<RetrieveImpl>b__15(Uri uri, UriQueryBuilder builder, Nullable`1 timeout, Boolean useVersionHeader, OperationContext ctx) 
      at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ProcessStartOfRequest[T](ExecutionState`1 executionState, String startLogMessage) 
      at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) 
     InnerException: 

Come posso eseguire il mio programma?

+0

Dove si sta tentando di eseguire il programma - sul computer locale durante lo sviluppo/test o effettivamente su Azure? Funziona in uno e non nell'altro? – JimMSDN

+0

Invia il codice associato dove viene lanciata l'eccezione. – JimMSDN

+0

Qual è il framework di destinazione nelle proprietà dell'applicazione? Non dovrebbe essere uno che termina con il profilo del cliente. –

risposta

1

Sembra la seguente parte di codice mancante nel web.config

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
+0

Questa è la soluzione che esiste qui: http://stackoverflow.com/questions/16908384/could-not-load- file-o-assemblaggio-microsoft-dati-odata-versione-5-2-0-0-error-in-az?rq = 1 ma menziona versioni precedenti rispetto alla versione dell'OP: –

+0

Grazie Ondipuli. Ci ho provato, ma non ho potuto farlo funzionare. Forse se cambio qualcosa alle versioni funzionerà. Ma non so esattamente cosa. – user2327751

+0

Puoi provare questo. Prova a reinstallare le librerie client di archiviazione tramite Nuget. Installerà le DLL rilevanti per impostazione predefinita. Vai a Visual Studio -> Strumenti-> Libarary Packet Manager -> Console Packet Manager -> PM> Install-Package WindowsAzure.Storage – Ondipuli

6

Ho incontrato lo stesso problema. Ho preso a lavorare facendo in modo che avevo le seguenti versioni libary installato dal NuGet:

Microsoft.Windows.Azure.Configuration 2.0.0.0 
Microsoft.Windows.Azure.Storage 4.1.0.0 
Microsoft.Data.Edm 5.6.1.0 
Microsoft.Data.OData 5.6.1.0 
Microsoft.Data.Services.Client 5.6.1.0 
System.Spatial 5.6.1.0 

Poi ho cambiato il mio app.config per contenere il seguente:

<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.1.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Nota che le assemblee si fa riferimento sono versione 5.6.1.0 mentre l'app.config fa riferimento a 5.6.0.0. Non so perché funzioni.

+1

Questo ha funzionato per me, oltre ad assicurarmi che Microsoft.Data. * Dll fossero 5.6.0.0 – codechinchilla

+1

Questo ha funzionato anche per me. strano –

+0

La differenza è che uno è la versione del pacchetto l'altra versione di assemblaggio. – War

0

Ho riscontrato questo problema con un netjob .net core2.0 e non ho trovato la risposta (qui o un blog, ecc.) (Non era questo, forse avrebbe funzionato per il pre core, ma mi ha dato l'indizio) ... ma quando ho aggiornato il mio Microsoft.Azure.webjobs e .Extentions a beta4 3.0.0 ho risolto il problema - se questo salva qualcuno da 2 giorni di inferno, ottimo.

Problemi correlati