VS2017 Report Designer 佈署後不能執行

前言

前一篇提到 Local Report升上2017需要安裝Extension [Microsoft Rdlc Report Designer for Visual Studio],在本機測試沒有問題。
但佈署後在Runtime出現格式不符的錯誤。


檢查佈署後的報表,變成precomplier的內容...


由於是已編譯後的內容,而程式是透過指定LocalReport的實體路徑來載入報表檔,所以找到的報表是編譯後的內容,當然會出現格式不符的錯誤。



解決方式

以下2種解決方式,視情況擇一即可。

1.移除BuildProvider

在裝完VS2017的報表套件後,此套件會修改web.config,在buildProvider加入報表組件的建置設定,所以在發行時將.rdlc檔建置成編譯後的檔案。

在不想修改程式的前提下,只要將此設定移除即可。

2.使用Embed Resource

更改檔案屬性為Embedded Resource

修改程式,指定Path的方式改成ReportEmbeddedResource

ps:指定ReportEmbeddedResource的方式,前提為你的報表檔案需在同一專案內,若你的報表與執行專案不同位置的話會發生錯誤,
要改用LoadReportDefinition方法來取得

Assembly assembly = Assembly.LoadFrom("Reports.dll");
Stream stream = assembly.GetManifestResourceStream("Namespace.Reports.CreditNote.rdlc");
rv.LocalReport.LoadReportDefinition(stream);

參考來源



這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS