VS2017 Report Designer 佈署後不能執行
前言
但佈署後在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);
參考來源