views:

61

answers:

1

Well,

As I read and try every topic similar without success, I decided to post my own question. My solution has a console app and a class library for dataaccess. The Nhibernate configuration is inside the appconfig in the console app (which I'm currently using for debug, as I will after make a Web App and migrate all configuration to web.config).

The exception is well know:

NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException: Unable to load type NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle.dll' during configuration of proxy factory class. Possible causes are: - The NHibernate.Bytecode provider assembly was not deployed. - The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed. Solution: Confirm that your deployment folder contains one of the following assemblies: NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll ---> System.IO.FileNotFoundException: Could not load file or assembly 'NHibernate.ByteCode.Castle.dll' or one of its dependencies. The system cannot find the file specified.

The steps I took to try to solve it:

1) The dll in the deployment folder - I have the following dll in my bin:
Antlr3.Runtime.dll - v. 3.1.3.42154
Castle.Core.dll - v. 2.5.1.2121
Castle.DynamicProxy2.dll - v. 2.2.0.6628
Iesi.Collections.dll - v.3.0.0.1002
log4net.dll - v. 1.2.10.0
NHibernate.ByteCode.Castle.dll - v.3.0.0.2001 NHibernate.dll - v.3.0.0.1002
Oracle.DataAccess.dll - v.4.112.1.2
Remotion.Data.Linq.dll - v.1.13.41.2

2) The configuration in configuration block

 <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
  <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
  <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
  <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
  <property name="connection.connection_string_name">MetaManager</property>
  <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle</property>
  <mapping assembly="MetaManager.Data"/>
</session-factory>

3) I set my MetaManager.Data project to deploy in a x86 CPU
4) All dll in my bin folder are referenced in the project.

I think this it it. I do not know were else to go :(

Pedro Dusso

updates in bold

+3  A: 

I think you have the wrong Castle version. You should be having Castle.Core.dll. NHibernate.ByteCode.Castle.dll probably isn't loaded because it cannot find Castle.Core.dll.

In the download from http://sourceforge.net/projects/nhibernate/files/NHibernate/3.0.0Beta1/, the files located in \Required_For_LazyLoading\Castle are the files you need.

Pieter
Thanks very much, but it didn't worked. I was with the alpha version yet, now I update to the beta but the error persists. I'll keep searching. Thanks again.
Pmdusso
Try the following steps: 1) remove all nhibernate dll's 2) clean and then rebuild your project 3) copy all dll's from \Required_Bin and \Required_For_LazyLoading\Castle from the beta zip and reference them 4) rebuild your project and verify that all dll's are in bin\Debug. This normally works for me.
Pieter
You wont believe... The VS was looking for the DLL in the bin folder of the console app (badly named "Debug" also...) not in my MetaManaget.Data project :( When I put the dlls I got a different (oracle) error.. not the same old **#$%#$ words! Thanks for the envisioning!
Pmdusso
@Pmdusso: This is caused because VS doesn't always update its reference paths once compiled, so that the path of your DLLs are set automatically by the VS IDE to your bin folder. It is recommended to set the `Reference Paths` within your projects' properties to avoid such behaviour. =)
Will Marcouiller