1

我有2个问题。

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

第一个问题是在发布我的应用程序、获取 exe 文件并安装我的应用程序后,我尝试运行该应用程序,但遇到一个异常,即找不到文件 hibernate.cfg.xml。但是,如果我通过 Visual Studio 运行,该应用程序运行良好。该配置文件位于调用配置的类的同一文件夹中。

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

4

3 回答 3

1

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

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

在您的 configsections 部分添加

<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"));
于 2013-10-21T18:20:03.327 回答
1

还有一个地方可以检查。

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

于 2017-02-12T15:52:36.870 回答
0

Publishing之后,你看到输出目录下的hibernate.cfg.xml了吗?

如果您在 Visual Studio 中添加了此文件,默认情况下它可能不会复制它。

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

于 2013-10-21T17:03:35.720 回答