1

我想要我的应用程序加载水晶报告的路径,

Dim Report As New ReportDocument  
Report.Load("D:\xxx\xx\x\ Report.rpt")  

而不是硬编码路径我需要它使用代码,因为我不知道我的客户将在哪里安装这个应用程序。

所以我尝试了以下代码

filepath = Path.GetDirectoryName(Application.ExecutablePath) 

但它返回的路径为 D:\xxx\xx\x\bin\
我不想在我的路径中使用那个 Bin,因为我的报告在“D:\xxx\xx\x\ Report.rpt”中可用,所以我该怎么办这里?

4

2 回答 2

4

你在做正确的事。不要更改该代码。

当您的应用程序在 IDE(DEBUG 或 RELEASE)内运行时,可执行路径由项目的 Output Dir 属性中的项目属性定义(BUILD 选项卡)。
部署应用程序后,路径正是您所期望的。

要解决您的情况,您应该Copy To Output Directory在每个报告文件上设置属性。这样,IDE 将在您Output Directory在项目属性中定义的任何位置复制报告

另一种选择(更灵活,但需要更多代码)是在您的配置文件中定义一个包含报告位置的自定义设置。您将能够在部署期间通过手动或自动更新(或在需要将报告移至其他位置之后)使用报告的路径更新此设置。
当然,当您加载报告时,您应该查看此属性并相应地构建路径

于 2013-05-24T07:10:49.630 回答
0

尝试

filepath = Path.GetDirectoryName(Application.ExecutablePath + "\..")

这将返回 bin 之前的文件夹。

于 2013-05-24T07:08:05.923 回答