2011-04-16 16 views
32

Jestem nowy w NHibernate i próbuję go wdrożyć, Fluent NHibernate i NHProf za pomocą NuGet. Po przeczytaniu tego artykułu (http://gurustop.net/blog/2011/03/13/nhibernate-3-1-0-on-nuget-important-details) wydaje się, że v3.1 nie powinien być instalowany bezpośrednio, jednak nie pojawia się takie ostrzeżenie dla v3.2.Zainstaluj NHibernate 3.2 z NuGetem

Po pomyślnym zainstalowaniu NHibernate 3.2 i NHProf przy użyciu NuGet, nie mogę zainstalować Fluent NHibernate, ponieważ jest napisane "Już odwołuje się do nowszej wersji NHibernate".

Ponadto po uruchomieniu aplikacji pojawia się następujący komunikat: "Nie można załadować pliku lub zestawu" NHibernate.ByteCode.Castle "lub jednej z jego zależności". Poniższy link (Could not load file or assembly in NHibernate) sugeruje instalowanie szeregu dodatkowych zespołów, co miałem nadzieję uniknąć, używając w pierwszej kolejności NuGeta.

W tym momencie byłoby to po prostu łatwiej wykonaj czynności opisane na NHForge dostać rzeczy i działa jak paczek Nuget nie wydają się być zgodne?

Odpowiedz

29

NHibernate 3.2 pochodzi z jego własnej fabryce proxy. Jeśli używasz pliku konfiguracyjnego, wystarczy usunąć właściwość konfiguracji proxyfactory.

wierzę wersję Fluent NHibernate, że używasz domyślnych użyć NHibernate.ByteCode.Castle. W takim przypadku trzeba by zastąpić to ustawienie z wbudowanym fabrycznie 3,2 NHibernate proxy:

.ProxyFactoryFactory("NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate") 
+2

Naprawiono to dla mnie (lub raczej usunięto jak używam plików konfiguracyjnych XML). "NHibernate.Pakiet integracyjny Castle w Nuget jest w tej chwili tylko do 3.1.0.4000 (kiedy piszę ten komentarz), musi zaktualizować go do najnowszej wersji NHibernate. Mam nadzieję, że nie ma znaczących różnic między własną fabryką proxy NHibernate a fabryką Castle'a? –

+0

Niesamowite dzięki! – CrazyCoderz

+1

@JamesWebster +1 do usuwania '' z konfiguracji XML. –

11

Każda wersja Fluent NHibernate używa dokładnie wersję NHibernate (dołączony do pakietu Fluent NHibernate) Należy usunąć pakiet NHibernate i Fluent NHibernate dodać tylko

+0

To prawda ... nie wiem, dlaczego ktoś głosował bez komentarza. – Charlino

+0

Pakiet Fluent Nhibernate instaluje NH 3.1. Pytanie odnosi się do 3.2. – mxmissile

+1

"Jestem nowy w NHibernate i staram się go uruchomić", więc uważam, że ta odpowiedź jest ważna - sam używam 3.1 z powodu tych problemów, w końcu, gdy wszystkie pakiety nadejdą, wszyscy będziemy być na 3.2 – Adam

0

NHibernate 3.2 pochodzi z własnej konfiguracji mapowania (zgodne). FluentNHibernate działa tylko z NHibernate 3.1, w wyniku czego nie można używać wersji 3.2 (miałem ten sam problem). Będziesz musiał ręcznie pobrać 3.1 i odwołać się do tego, o ile NuGet nie zezwoli na bezpośrednie użycie 3.1.

Inną opcją jest usunięcie wszystkich odwołań do wersji 3.2, a następnie zainstalowanie FluentNHibernate z NuGet, następnie narzędzie do rozwiązywania zależności zostanie uruchomione i automatycznie uwzględni dla ciebie NHibernate 3.1.

3

Używam tego consctruction w pliku konfiguracyjnym, aby FluentNhibernate pracy z NHibernate 3,2

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.2.0.1001" newVersion="3.2.0.1001" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
+0

Dobra rozmowa. Potrzebowałem tego, aby FluentNHibernate 1.3.0.727 mógł grać z NHibernate 3.3.1.4000. –