references net framework descargar c# nhibernate fluent-nhibernate

c# - net - Problema con NHibernate, Fluido NHibernate y Iesi.Collection. ¿Qué intentarías a continuación?



nhibernate references (2)

Soy extremadamente nuevo en NHibernate, así que me disculpo si me falta algo trivial aquí. Actualmente estoy trabajando a través de un libro titulado "NHibernate 3 Beginners Guide" de packtpub. Principalmente he estado siguiendo las instrucciones en el libro. Cuando digo que principalmente he divergido usando MySQL en lugar de MSSQL y he estado usando NuGet en lugar de descargar los binarios a mano.

Estoy en el Capítulo 2 en este momento, que es el primer capítulo de codificación real. En este capítulo, estoy creando una aplicación WPF simple para construir el esquema de mi base de datos a través de un botón. Ya he creado algunos POCO para las clases de Product y Category especificadas en el capítulo. A través de NuGet he añadido las siguientes referencias:

  1. MySQL.Data
  2. NHibernate (como una dependencia automáticamente resuelta, Iesi.Collections)
  3. Fluido NHibernate

Cuando hago clic en el botón para construir mi base de datos, se ejecuta el siguiente bloque de código:

private const string connString = "string omitted for brevity"; private void btnCreateDatabase_Click(object sender, RoutedEventArgs e) { Fluently.Configure().Database(MySQLConfiguration.Standard.ConnectionString(connString)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ProductMap>()) .ExposeConfiguration(CreateSchema) .BuildConfiguration(); }

Al hacer clic en el botón recibo la siguiente excepción ( FileLoadException ):

Mensaje de excepción externa: Could not load file or assembly ''Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'' or one of its dependencies. The located assembly''s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Could not load file or assembly ''Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'' or one of its dependencies. The located assembly''s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Mensaje de excepciones internas: Could not load file or assembly ''Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'' or one of its dependencies. The located assembly''s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) Could not load file or assembly ''Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4'' or one of its dependencies. The located assembly''s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Aquí está el "Fusion Log" si eso ayuda:

=== Pre-bind state information === LOG: User = Borealis/Frito LOG: DisplayName = Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 (Fully-specified) LOG: Appbase = file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/ LOG: Initial PrivatePath = NULL Calling assembly : NHibernate, Version=3.3.1.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/Sample.UI.vshost.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: Redirect found in application configuration file: 1.0.1.0 redirected to 4.0.0.0. LOG: Post-policy reference: Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4 LOG: Attempting download of new URL file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/Iesi.Collections.DLL. WRN: Comparing the assembly name resulted in the mismatch: Major Version ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

He intentado lo siguiente y ahora estoy un poco perdido:

  1. Intenté actualizar Iesi.Collections a través de NuGet, pero eso falla porque dice que no hay una versión para NHibernate que sea compatible.
  2. Descargando los binarios para NHibernate y FluentNhibernate y manualmente referenciados.
  3. Extraer las muestras de origen del libro y copiarlas en los archivos DLL de la muestra. Esto me dio un error diferente que no he investigado lo suficiente como para hacer preguntas todavía.

Tengo dos preguntas:

  1. Primero, ¿por qué los paquetes de NuGet intentan buscar una versión 4. * dll cuando las versiones que se envían apuntan de nuevo a 1. *?
  2. ¿Qué otras cosas debo intentar para conseguir que todos los trabajos y fuentes se construyan localmente? Estoy un poco perdido y me encantaría algún otro aporte.

¡Gracias por adelantado!


Iesi.Collections 4.0 es una versión muy modificada dirigida a .Net 4.0, para usar con un futuro NHibernate 4.0.

Desafortunadamente, los paquetes de Nuget para versiones de NHibernate hasta 3.3.1 inclusive no especifican un límite superior para la dependencia de Iesi. Con NHibernate 3.3.2 esto se cambió, para prohibir explícitamente la versión 4 o superior de Iesi. Entonces, si actualiza a NH 3.3.2 a través de NuGet, espero que resuelva la dependencia de Iesi a una versión 3.x.


Santos poopers esto me volvió loco. Encontré que se creó un app.config en algún momento, presumiblemente cuando estaba jugando con algo. En la app.config encontré lo siguiente:

<?xml version="1.0" encoding="utf-8"?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Iesi.Collections" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

Al comentar el elemento Runtime , la reconstrucción y la ejecución permitieron que el botón de arriba funcionara correctamente. No estoy seguro de qué hice para generar esto, pero me alegro de haberlo encontrado. ¡Gracias a todos por sus esfuerzos para ayudar y gracias por el voto a favor de la pregunta!