2010-08-13 54 views
22

我在我的WPF應用程序中有幾個RDLC文件。當我發佈該項目時,報告文件不會發布,並且當我嘗試通過客戶端訪問它們時,我收到一條錯誤消息,說他們找不到。我檢查了發佈文件夾,事實上,他們不在那裏。我所說的RDLC文件,用下面的代碼:發佈RDLC文件

Microsoft.Reporting.WinForms.ReportViewer rvReportViewer; 
/* ... */ 
rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName); 

我試着用以下的生成操作設置爲「資源」,這是我對我的靜態圖像文件,但似乎沒有不有什麼區別。

爲什麼不將報告複製到發佈目錄?有沒有辦法強制這種情況發生,或者我應該以其他方式訪問它們?

謝謝!

回答

35

我不知道RDLC文件是否有特別的問題,但是這裏是確保其他文件發佈的一般方法。

右鍵單擊解決方案資源管理器中的文件,選擇屬性。將「Bu​​ild Action」設置爲「Content」,然後「Copy to output Directory to」Copy if newer「

轉到項目屬性 - >發佈頁面,點擊」應用程序文件按鈕「,勾選」顯示所有文件」設置 「發佈狀態」,以 「包括(自動)」

文件屬性

File Properties

應用程序文件

Publish Properties

+0

使用這些設置會將每個rdlc文件的額外副本發佈到bin文件夾。查看我的答案以瞭解其他設置。 – 2013-07-09 08:03:45

27

我一直在使用的答案被@nos了一段時間,但我注意到,在出版物中,一套.rdlc,文件被複制到兩個地方:

  1. 原來的web應用項目相對位置;
  2. 在bin文件夾中。

所以,如果我有\報告\ Report1.rdlc,我會發現在發佈位置:

1. <published folder>\Reports\Report1.rdlc; 
2. <published folder>\bin\Reports\Report1.rdlc. 

我並不想使用RDLC的副本在第二的位置,實際上,如果我刪除這些,報告仍然生成。

我改變了設置每個RDLC文件到:

Build Action: Content; 
Copy to Output Directory: Do not copy. 

現在沒有數據被寫入到第二的位置。

+2

這應該是正確的答案 – mork 2014-05-12 12:49:50

+0

同樣在這裏,這應該是正確的解決方案 – 2015-12-10 01:46:35

2

而不是使用。ReportPath

  1. **使用該代碼如下:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project 
Name].[FolderName if Exist].[ReportName].rdlc"; 
  • 然後重建部署項目。
  • 2

    對不起,這與「複製總是」或「如果是新的複製」無關。事實上,我將它設置爲「永不復制」。 通過將生成操作從「嵌入式資源」更改爲「內容」來解決此問題。然後,當你建立和發佈RLDC文件將被複制到正確的地方。