Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';找不到文件hibernate.cfg.xml';在发布我的应用程序后运行时_C#_Wpf_Nhibernate_Deployment - Fatal编程技术网

C# ';找不到文件hibernate.cfg.xml';在发布我的应用程序后运行时

C# ';找不到文件hibernate.cfg.xml';在发布我的应用程序后运行时,c#,wpf,nhibernate,deployment,C#,Wpf,Nhibernate,Deployment,我有两个问题 我的应用程序是WPF c#应用程序,使用MS Access作为数据库(.dbm文件)和NHibernate进行连接 第一个问题是,在发布我的应用程序、获取exe文件并安装我的应用程序后,我尝试运行该应用程序,但遇到了一个异常,它找不到文件hibernate.cfg.xml。但是,如果我运行VisualStudio,该应用程序运行良好。该配置文件位于调用配置的类的同一文件夹中 此外,我不确定我的发布方法是否正确。要发布我的WPF应用程序,我在解决方案资源管理器中右键单击主项目>发布>

我有两个问题

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

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


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

发布后,您是否在输出目录中看到hibernate.cfg.xml

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


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

一个选项是将您的nHibernate配置移动到app.config中

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

还有一个地方要查


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

在发布后获得的文件夹中,我只看到了“Hibernate.cfg.xml.deploy”。那是同一份文件吗?(我也希望看到hibernate.cfg.xml会放在.exe文件的同一个文件夹中,但不是我希望的那样。)在Visual中,hibernate.cfg.xml文件的属性也设置为“content”和“copy always”。你有没有其他办法来解决我的问题?如果你将文件设置为“内容”并输出为“始终复制”,那么该文件应始终保存到生成文件夹中。尝试通过构建干净的解决方案来清洁您的解决方案,然后重新构建它。另外,请检查您的解决方案配置,我不确定debug/release如何处理已发布的WPF,但您的文件可能会被复制到未正确检查的文件夹中。我认为“始终复制”是指将文件复制到bin目录,而“内容”表示发布操作应将文件复制到相同的项目相对位置(即,这是用于例如aspx和MVC视图的位置)。
<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"));