2011-02-01 9 views
5

Mam hibernate.cfg.xml zawartych w mojej bibliotece usługi WCF zNHibernate - Nie można odnaleźć pliku hibernate.cfg.xml

BuildAction = Content and 
Copy to output directory = Copy Always

Jednak, kiedy uruchomić aplikację to rzuca następujący błąd:

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

Nie jestem pewien, dlaczego szuka pliku hibernate.cfg.xml na powyższej ścieżce zamiast katalogu bin w czasie wykonywania.

FYI: Niedawno zainstalowałem DevExpress v10.2 do użycia w innej aplikacji.

Wszelkie pomysły?

Odpowiedz

14

Jedną z opcji jest, aby przenieść konfigurację NHibernate do web.config

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

W sekcji configsections dodać

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

Inną opcją jest, aby spróbować to (niesprawdzone w WCF)

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

Dzięki Rippo, ustawienie Environment.CurrentDirectory = System.AppDomain.CurrentDomain.Ba seDirectory; rozwiązał mój problem. Jednak nadal nie jestem w stanie zrozumieć, dlaczego środowisko wykonawcze ma DevExpress jako bieżący katalog. – iniki

+0

Przekaż, że zawsze lepiej jest jawnie powiedzieć konfiguracji NHibernate gdzie znaleźć config xml. – Rippo

+0

Używając aplikacji usługi WCF, a nie biblioteki, stwierdziłem, że muszę przedrostkiem "bin /" do nazwy pliku. Ponieważ złożenia i tak znajdą się w folderze bin, uważam, że ten rodzaj twardego kodowania nie będzie problemem. –

Powiązane problemy