Rdlc(Report Defination 2016) on Msbuild 4.0 issue

  • 196
  • 0
  • 2018-12-07

透過Report desgner for 2017開發rdlc報表

前陣子公司電腦換了Visual Studio 2017,

有同事安裝了 Report designer for 2017 工具進行 rdlc 報表開發。

簽入版控後, 想透過 CI 網站進行部屬, 在建置的過程中發生了報表定義無效的錯誤。

原因在於那台上版機器還是使用 Msbuild 4.0 去處理編譯

仔細研究了 msbuild target 的流程, 它從 CSharp.targets 往下執行, 到Microsoft.Common.targets

裡面會定義 ReportingServiceTargets 再 import 進來,

它會使用註冊在GAC上的 Microsoft.Reportviewer.Webform.dll 使用 Microsoft.Reporting.RdlCompile 進行編譯

關鍵在這裡,它是11版的dll,

交叉對比 VS2017 的建置輸出, 後來發現 VS2017 缺少ReportingService目錄,

整個過程是不做 rdlc 編譯

所以其實可以指定一個不存在的檔案給 ReportingServiceTargets 屬性,

讓 msbuild 4.0 在這段不去做編譯 rdlc的動作

這樣應該就可以避掉 msbuild 4.0 建置出錯的問題了。