NHibernate 3.0 RTM e Medium Trust

Update 18/05/2011: Scarica la versione di NHibernate-3.1.0.GA compilata con LinFu-1.0.3.28303 compatibile con Medium Trust (leggere comunque il resto l'articolo per modificare il file di configurazione)

NHibernate 3.0 è finalmente stato rilasciato in versione finale ma purtroppo presenta qualche problema con hosting Medium Trust (e quindi i siti in hosting su Aruba), vediamo come ricompilare il nostro ORM per renderlo finalmente funzionante anche in tali condizioni.

Premetto che non dobbiamo modificare il sorgente di NHibernate ma semplicemente ricompilarlo con le nuove versioni delle librerie LinFu e RemotionRelinq.

Scarichiamo:
- i sorgenti di NHibernate 3.0GA 
- LinFu.DynamicProxy 1.031
- RemotionRelinq  1.13.84 (o comunque una versione successiva alla 1.13.63, le versioni con l’ultimo numero pari sono più stabili)
- NAnt 0.90 ci servirà per compilare il tutto

Come primo passo scompattiamo i sorgenti di NHibernate e al loro interno scompattiamo NAnt che sarà quindi contenuto dentro alla cartella nant-0.90.
Creiamo ora il file “Build.bat” che ci permetterà di compilare tramite NAnt col seguente contenuto:

@nant-0.90\bin\NAnt.exe -t:net-3.5 -D:project.config=release clean package
pause

Prima di lanciare la compilazione però andiamo a copiare nella cartella lib/net/3.5 dei sorgenti di NHibernate il file LinFu.DynamicProxy.dll contenuto nel secondo download e il file Remotion.Data.Linq.dll contenuto nella cartella net-3.5/bin/release del terzo download.

Lanciamo adesso il file Build.bat creato in precedenza e aspettando qualche secondo troveremo la cartella build che conterrà al suo interno il nostro NHibernate pronto per essere utilizzato in ambienti Medium Trust.

NB: La compilazione della documentazione potrebbe fallire ma ciò non influisce sulla compilazione delle dll.

Per poter utilizzare NHibernate in ambienti Medium Trust nel file di configurazione App.config dobbiamo ricordarci di specificare requirePermission="false" nelle sezioni di configurazione di NHibernate e Log4Net. Esempio:

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

Mentre nella hibernate-configuration dobbiamo specificare reflection-optimizer use="false" e come proxyfactory Linfu

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <reflection-optimizer use="false"/>
    <session-factory>
        ...
        <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
        ...
    </session-factory>
</hibernate-configuration>

That’s all!

Voglio infine ringraziare Padova Boy per l'eccellente articolo su come utilizzare NHibernate 2.1.2 in ambienti Medium Trust.

posted @ Thursday, December 9, 2010 8:35 PM

Print

Comments on this entry:

# re: NHibernate 3.0 RTM e Medium Trust

Left by PadovaBoy at 12/13/2010 11:43 PM
Gravatar
Ottimo aggiornamento alla 3 leonardo! Grazie per aver condiviso!
Ps: 'i ragazzi di padovaboy' suona male ;) son soltanto io che ho attinto dalle discussioni/articoli di Antonio Santise e Simone Busoli :)
Grazie ancora per il riferimento!

Your comment:



 (will not be displayed)


 
 
 
Please add 4 and 4 and type the answer here:
 

Live Comment Preview: