2014-08-28 33 views
0

我的项目中有两个水晶报表。如何部署水晶报表WPF应用程序

我在我的项目中有SaleBillReport.rpt文件。 正在使用报告对象方法加载,代码如下。

首先报告显示为 -

案例1:

SaleBillReport rptObj = new SaleBillReport();//My Rpt file name 
rptObj.SetDataSource(_ReportDataSet); 

_reportViewer.ReportSource = rptObj; 

第二份报告显示为 -

案例2:

ReportDocument objReportDoc = new ReportDocument(); 
objReportDoc.Load(@"D:\\" + "MyReport.rpt"); 

ReportViewerNew.ReportSource = objReportDoc; 

我的问题是在部署此项目时,我不需要将任何.rpt文件放在任何地方。 它在我的应用程序中内置。

但是我必须把我的第二个.rpt文件放到任何显示路径中(我不想放在任何地方) 那么我如何在部署期间在我的项目中构建第2个.rpt文件。

在此先感谢

+0

您正在使用哪种部署方法?安装项目或点击一次或别的东西? – 2014-08-28 07:12:30

+0

只是在发布模式下构建应用程序。 – prashant 2014-08-28 09:53:19

回答

0

使用反射来找出你的应用程序安装

System.Reflection.Assembly.GetExecutingAssembly

Method explantion

,并要求该程序集的文件夹并添加您的报告文件名到该路径...

0

一个解决方案可以使用反射但它有点棘手。

第二个和更简单的将使用Environment.CurrentDirectory

为此,修改案例2这样的代码 -

ReportDocument objReportDoc = new ReportDocument(); 
string reportPath = System.IO.Path.Combine(Environment.CurrentDirectory, "MyReport.rpt"); 
objReportDoc.Load(reportPath); 

ReportViewerNew.ReportSource = objReportDoc; 

,并为您的报告是在当前目录中的位置始终是永久性的,就到你的MyReport.rpt文件的属性,然后选择复制总是复制如果更新

+0

如果我会选择复制,那么它会在.exe文件夹中创建.rpt文件。我不想那样做。 – prashant 2014-08-28 09:59:08

相关问题