在发布我的应用程序后运行时“无法找到文件hibernate.cfg.xml”

时间:2013-10-21 16:40:21

标签: c# wpf nhibernate deployment

我有2个问题。

我的应用程序是WPF c#app,我们将MS Access作为数据库(.dbm文件)和NHibernate进行连接。

第一个问题是在发布我的应用程序,获取exe文件并安装我的应用程序之后,我试图运行应用程序,我得到一个例外,它无法找到文件hibernate.cfg.xml。但是,如果我运行Visual Studio,该应用程序工作正常。该配置文件位于调用配置的类的同一文件夹中。

另外,我不确定我的发布方法是否正确。要发布我的WPF应用程序,请在解决方案资源管理器中右键单击主项目>发布>然后按照几个步骤结束,点击“完成”。我没有看到任何配置文件出现在我希望看到的发布文件夹中,因为我想让用户以后能够配置他的数据库(.dbm文件)的路径。那么这是第二个问题。

3 个答案:

答案 0 :(得分:1)

一种选择是将您的nHibernate配置移动到app.config

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

在您的配置部分添加

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

或者

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

答案 1 :(得分:1)

还有另一个要检查的地方。

打开您的项目属性,转到&#39;发布&#39;然后点击“应用程序正常”#39;。在此界面中,您必须检查文件Hibernate.cfg.xml是否包含&#39; Include&#39;在发布状态。

答案 2 :(得分:0)

发布后,你在输出目录中看到了hibernate.cfg.xml吗?

如果您在Visual Studio中添加了此文件,则默认情况下可能无法复制该文件。

确保在文件的属性中,其类型设置为“内容”,输出为“复制”。