with what started read pricing porta kind from delete are c azure azure-storage azure-table-storage

c - what - porta azure



No se pudo cargar el archivo o ensamblar el error Microsoft.Data.OData Version=5.2.0.0 en Azure Cloud Worker Role usando Table Storage (5)

El problema de apertura para un problema tan fácil de resolver no lo ayudará.

Coloque la siguiente configuración de adición en sus respectivos archivos de configuración (web.config para MVC y app.config para la función de trabajador):

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

Tenga en cuenta que la sección de runtime es descendiente directo del elemento raíz de configuration . Estoy bastante seguro de que ya tiene esta sección en su web.config, porque MVC4 la usa para vincular todas las referencias a System.Web.MVC a la última versión.

Personalmente, no espero que el SDK se actualice con cada nueva versión de cada biblioteca a la que se hace referencia. Esto sería una locura ...

Tengo un problema muy peculiar con Azure Table Storage. Tengo un proyecto .NET 4.5 en Visual Studio 2012 donde me ocupo de todas mis funciones de Azure Table Storage. Este proyecto / dll es referenciado por otros dos proyectos, mi sitio web de MVC y mi rol de trabajador de Azure. (Estoy ejecutando los Emuladores Azure en mi máquina, pero también sucede cuando lo despliego a la nube)

Tengo la siguiente función que se llama cuando guardo o recupero un registro:

internal static CloudTable GetTable(CloudStorageAccount storageAccount, string tableReference) { CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference(tableReference); table.CreateIfNotExists(); return tableClient.GetTableReference(table.Name); }

En mi sitio web de MVC, tengo una función que guardará un registro en una tabla de almacenamiento de Azure, y luego, en mi Rol de trabajador de Azure, hay un servicio que leerá el registro.

Entonces, ambos usan el mismo dll para almacenamiento y recuperación, sin embargo, mi proyecto MVC no tiene problemas para guardar el registro, pero en mi servicio de rol de Azure Worker cuando intenta recuperar el registro, lanza la excepción cuando intenta ejecutar "table.CreateIfNotExists () ; ".

No se pudo cargar el archivo o ensamblado ''Microsoft.Data.OData, Versión = 5.2.0.0, Cultura = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)

Ya he hecho lo siguiente:

  1. Se actualizaron todos los paquetes NuGet desde el nivel de solución hasta las últimas versiones
  2. Revisé cada referencia de proyecto para asegurarme de que no había ninguna DLL antigua o versiones anteriores, en particular System.Spatial, Microsoft.WindowsAzure.Configuration, Microsoft.WindowsAzure.ServiceRuntime y Microsoft.ServiceBus, Microsoft.WindowsAzure.Storage, Microsoft.Data.Edm y Microsoft.Data.OData
  3. Incluso he creado un nuevo proyecto de servicio en la nube y proyecto WorkerRole desde cero para asegurarme de que no esté roto en el proyecto WorkerRole actual.

No volví a poner el dll en 5.2 ya que tenía demasiados problemas en otros proyectos en los que utilizo funciones que son específicas de 5.3 en adelante.

Actualmente estoy ejecutando todos los dll en 5.5.

Cuando ejecuto la utilidad AsmSpy.exe que se encuentra here , obtengo el siguiente resultado que no estoy 100% seguro de cómo interpretar.

> Reference: Microsoft.Data.Edm > 5.5.0.0 by Microsoft.Data.OData > 5.5.0.0 by Microsoft.Data.Services.Client > 5.5.0.0 by Microsoft.WindowsAzure.ActiveDirectory.GraphHelper.2013_04_05 > Reference: System.Spatial > 5.5.0.0 by Microsoft.Data.OData > 5.5.0.0 by Microsoft.Data.Services.Client Reference: Microsoft.Data.OData > 5.5.0.0 by Microsoft.Data.Services.Client > 5.2.0.0 by Microsoft.WindowsAzure.Storage <-- THIS SEEMS TO BE THE ONE THAT IS CAUSING ISSUES

Cómo lo interpreto, es que el dll de Microsoft.WindowsAzure.Storage está haciendo referencia a V 5.2.0.0 de la DLL de Microsoft.Data.OData, pero ¿cómo puedo arreglar esto, si este es el problema? De acuerdo con la documentación que he visto en el dll Storage es que se supone que hace referencia a 5.4 y arriba, no a 5.2 ...?


Puede resolver este problema en general cada vez que actualice paquetes o agregue paquetes nuevos a través de NuGet y termine con problemas de "No se puede cargar el archivo o ensamblar ...".

Abra la consola de Package Manager ( VS 2012 Tools / Library Package Manager / Package Manager Console ). Una vez que el shell se abre para la consola del administrador de paquetes, ejecute el comando:

Add-BindingRedirect

Nota: Tenga cuidado ya que el ejemplo de NugGet agregó una ''s'' al final en su ejemplo y Add-BindingRedirect no es un comando válido.

Esto hace lo siguiente:

Examina todos los ensamblados en la ruta de salida de un proyecto y agrega redireccionamientos de enlace al archivo de configuración de la aplicación (app.config) o al archivo de configuración web (web.config) donde sea necesario.

Puede ver la documentación completa de la consola de Package Manager en: http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference%20(v1.3)

Además de las dos entradas que ve en la respuesta de astaykov, también se agregó lo siguiente para mi Proyecto.

<dependentAssembly> <assemblyIdentity name="System.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> </dependentAssembly>


También tuve un problema similar, pero no estaba usando Azure y no había ninguna referencia codificada que apuntara a 5.2. Pero resolvió (después de encontrar este artículo ) asegurándose de que el texto en el archivo .svc apuntaba al ensamblaje correcto:

<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory, Microsoft.Data.Services, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

Servicio = "MVC4WCFDataServiceFE5.NorthWindService"%>

Tenga en cuenta la versión = 5.6.0.0 , que no tenía antes.


Tenía un problema muy similar, pero en este caso era un mensaje de excepción;

No se pudo cargar el archivo o ensamblado ''Microsoft.Data.OData, Versión = 5.5.0.0, Cultura = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)

tenga en cuenta que estaba tratando de cargar v5.5.0.0 del ensamblado OData.

Después de investigar con ILSpy ( http://www.ilspy.net ), descubrí que Microsoft.WindowsAzure.Storage 2.0.0.0 hacía referencia explícita a Microsoft.Data.OData 5.2.0.0, que no tenía, ya que mi versión era 5.5.0.0.

Entonces la solución fue usar el administrador de paquetes NuGet para desinstalar Microsoft.WindowsAzure.Storage, este intour desinstaló Microsoft.Data.OData 5.5. Luego, nuevamente usando el administrador de paquetes NuGet, reinstale Microsoft.WindowsAzure.Storage que identificó que necesitaba Microsoft.Data.OData 5.2 e instaló eso también.

y de vuelta a una solución de trabajo.


Tuve un problema similar hoy. La única diferencia que detecté es que mi aplicación en la nube buscaba (y no encontraba) para Microsoft.Data.OData en Version = 5.2.0.0

Usando el Visual Object Browser descubrí que mi solución usaba la biblioteca de esa ubicación:

C: / Archivos de programa (x86) / Microsoft WCF Data Services / 5.0 / bin / .NETFramework

La biblioteca Microsoft.Data.OData que reside allí estaba en ver. 5.0.0.0 por lo que sobrescribirlo con 5.2.0.0 resolvió el problema.

PD: Instalé WCF Data Services Tools para Windows Store Apps anteriormente con la esperanza de resolver este problema, por lo que puede suceder que su aplicación lo reciba de otra fuente. Si ese es el caso, tienes dos opciones:

  1. Instale WCF Data Services Tools para Windows Store Apps desde here y use la solución anterior.

  2. Utilice Visual Studio Object Browser para encontrar qué versiones de la biblioteca OData están actualmente visibles para su proyecto y dónde están almacenadas. A continuación, debe sobrescribir las versiones incorrectas de ellos.