2011-02-01 25 views
5

I hibernate.cfg.xml he incluido en mi biblioteca servicio WCF conNHibernate - No se pudo encontrar el archivo hibernate.cfg.xml

BuildAction = Content and 
Copy to output directory = Copy Always

Sin embargo, cuando ejecuto la aplicación se está lanzando siguiente error:

Could not find file 
'C:\Program Files (x86)\DevExpress 2010.2\IDETools\System\CodeRush\Bin\PlugIns\hibernate.cfg.xml'

No estoy seguro de por qué está buscando hibernate.cfg.xml en la ruta anterior en lugar del directorio bin en tiempo de ejecución.

FYI: Recientemente instalé DevExpress v10.2 para ser utilizado en otra aplicación.

¿Alguna idea?

Respuesta

14

Una opción es mover la configuración de NHibernate en el web.config

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    ... 
    </session-factory> 
</hibernate-configuration> 

En su sección configsections añadir

<configuration> 
    <configSections> 
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false" /> 
    ... 
    <configSections> 
<configuration> 

Otra opción es tratar de esto (no probado en WCF)

var cfg = new Configuration(); 
cfg.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"hibernate.cfg.xml")); 
+0

Gracias Rippo, configuración Environment.CurrentDirectory = System.AppDomain.CurrentDomain.Ba seDirectory; resolvió mi problema Sin embargo, todavía no puedo entender por qué el tiempo de ejecución tiene DevExpress como directorio actual. – iniki

+0

Sin embargo, siempre es mejor indicar explícitamente a la configuración de NHibernate dónde encontrar el archivo config xml. – Rippo

+0

Utilizando una aplicación de servicio WCF en lugar de una biblioteca, descubrí que tenía que prefijar "bin /" al nombre del archivo. Dado que los ensamblajes estarán en la carpeta bin al momento de la implementación, creo que este tipo de codificación difícil no será un problema. –

Cuestiones relacionadas