2009-12-17 14 views
5

Quiero aprender a usar Fluent NHibernate, y estoy trabajando en VS2010 Beta2, compilando contra .NET 4, pero estoy teniendo algunos problemas.¿Cómo uso Fluent NHibernate con .NET 4.0?

Resumen
Mi problema principal (por el momento) es que el espacio de nombres FluentNHibernate no está disponible a pesar de que he importado todos los montajes .dll mencionados en this guide.

Esto es lo que he hecho:
1. He descargado la fuente Fluido NHibernate de here, extraje el .zip y abrí la solución en VS. Un cuadro de diálogo me preguntó si quería convertir la solución a una solución VS2010, así que lo hice.
2. Luego entré en las propiedades de cada proyecto y las configuré todas para compilar para .NET 4, y construí toda la solución.
3. Copié todos los archivos .dll de /bin/Debug/ en FluentNHibernate a una nueva carpeta en mi disco duro local.
4. En mi proyecto de ejemplo, hice referencia a FluentNHibernate.dll y NHibernate.dll desde la nueva carpeta.

Este es mi problema:
Si yo haga clic derecho en FluentNHibernate en la lista de referencias y seleccione "Ver en el explorador de objetos ...", se muestra correctamente.

Ahora, cuando intento crear una clase de asignación, no puedo importar FluentNHibernate. Este código:

using FluentNHibernate.Mapping; 

namespace FluentNHExample.Mappings 
{ 

} 

genera un error en la instrucción using, diciendo

El tipo o espacio 'FluentNHibernate' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?).

El ensamblado FluentNHibernate todavía está en la lista de Referencias de mi proyecto, pero si intento explorar el ensamblado en el Examinador de objetos nuevamente, no se puede encontrar.

¿Qué está causando esto?

Respuesta

0

Soy incapaz de observar este comportamiento en mi construcción, que podría estar relacionada con este problema: Weird override problem with Fluent NHibernate and .NET 4

Si lo que podría intentar http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/ae4013d711d2e4ad como una solución potencial.

+0

Sí, se dará cuenta de que la otra publicación de SO a la que se ha vinculado también fue creada por mí. Quizás estén relacionados porque ambos se generan al tratar de ejecutar FNH en .NET 4, pero los problemas específicos son distintos. –

+0

Estaba pensando que tal vez se estaba reflejando sobre los tipos de intellisense o algo así y se encuentra con el mismo error. –

+0

Tenías razón, cuando resolví el otro problema, esto también funcionó. –

6

También tuve un problema similar.

ventana "Lista de errores" aparece:

El tipo o espacio de nombres 'FluentNHibernate' no se puede conocer (¿falta una directiva using o una referencia de ensamblado?)

Pero "Salida" la ventana mostraba información detallada:

advertencia MSB3253: El ensamblado al que se hace referencia "FluentNHibernate" no se pudo resolver porque tiene una dependencia en "System.Data.OracleClient, Version = 4.0.0".0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "que no está en el marco actualmente orientado" .NETFramework, Version = v4.0, Profile = Client ". Elimine las referencias a los ensamblados que no estén en el marco específico o considere reorientar su proyecto.

En mi caso;. que había creado un proyecto de aplicación de consola que se dirige a ".Net Framework 4 Client Profile" por defecto, por lo que cambiar a ".Net Framework 4" solucionado el problema para mí

0

¿no hay una mejor manera de arreglar este problema?

No quiero hacer referencia a System.Data.OracleClient. Así que no debería tener que apuntar al .Net Framework completo si ni siquiera quiero esa referencia.

¿No puedo orientar el perfil de cliente de .Net framework, pero agrego una excepción de advertencia de compilación en algún lugar para que se salte esa advertencia? Sé que no causará un problema de tiempo de ejecución porque no uso Oracle.

Me sale un problema idéntico que dice que también hay una dependencia en System.Web. La misma historia, esto es para una aplicación Windows WPF, así que no necesito System.Web. ¿No puedo simplemente orientarme al perfil del cliente y de alguna manera convencer al compilador de que siga funcionando?

Gracias, Hugh

EDIT: Me di cuenta de esto! Aunque tuve que compilar NHibernate. Abrí el código 2.1.2 en Visual Studio y eliminé todo lo que decía "Oracle" o "System.Web" y terminé compilando. No tengo que apuntar al .Net Framework completo ahora.

0

Tuvimos este problema y el problema desapareció si eliminamos la carpeta obj y bin del proyecto que hacía referencia al proyecto que utiliza NHibernate.

Así que tenemos 'project1' que utiliza NHibernate para producir project1.dll. 'project2' hace referencia a project1.dll.

Problema resuelto si eliminamos la carpeta obj/bin de project2.

No puedo decir por qué, pero nuestra solución ahora compila bien.

Mike.

Cuestiones relacionadas