1

从这里的上一个线程继续工作。

我所做的是从 .cs 文件所在的位置复制并粘贴 .rpt 文件并将其移动到 \bin\Debug 文件夹中。它可以工作,但是当我删除 .cs 文件所在的 .rpt 文件时,我得到了错误......

读取资源文件'C:..Report.rpt'时出错——'系统找不到指定的文件。'

我在 btn 方法中创建了一个动态路径...

private void btn_Click_1(object sender, EventArgs e)
    {
       ReportDocument cryRpt = new ReportDocument();
       cryRpt.Load(Application.StartupPath + "\\Report.rpt");
       crystalReportViewer1.ReportSource = cryRpt;
       crystalReportViewer1.Refresh();
    }

有几个问题在我脑海中浮现,因为我将使用 Setup Project,而且由于缺乏知识和经验,我很少感到困惑。

1) 我应该将 .rpt 文件保留在 .cs 文件的位置,然后将 .rpt 文件复制并粘贴到 \bin\Debug 文件夹中吗?

2)我需要做其他事情吗?这就引出了另一个问题……我该怎么办?

3)当我查看 .rpt 文件的属性时,我可以看到完整的路径目录。

所以我正在寻找指导。

如果有人可以在这里帮助我,请提前感谢。

4

2 回答 2

2

您可以在项目中包含您的 rpt 文件并将它们标记为:

  • 构建操作:无(因为它们没有构建)
  • 复制到输出:始终复制或如果更新则复制 - 这样它们将输出到与您的二进制文件相同的文件夹(在您的情况下为 \bin\Debug)。
于 2013-11-10T11:16:29.957 回答
1

好的 .net 被定义为使用所谓的 Xcopy 部署。即应用程序所需的所有文件最终都在输出文件夹中。构建后,您可以“在任何地方”复制该文件夹,您的代码将正常工作。

它通过将“额外”文件从机器上的任何位置复制到输出文件夹来实现。按照@Syzmon 的指示,将属性设置为copy if neweror copy always,就是这样。

显然,为了将文件复制到某个地方,原始文件必须存在。当您从代码文件夹中删除它们时,您将 VS 留在与删除 cs 文件时相同的位置,然后想知道为什么您没有得到一个 exe...

所以基本上你做对了,只是不要删除原件。

于 2013-11-10T11:33:13.943 回答