2010-09-07 30 views
1

我有一個VS2008 Web應用程序項目正在預編譯沒有是可更新的。當我嘗試使用ReportViewer加載應該顯示RDLC報告的頁面時,它只顯示一個空白頁面。它在一個非預編譯版本中工作正常。可能是什麼問題呢?爲什麼我的預編譯的Web應用程序不能加載RDLC報告?

+0

提問並回答了我自己的問題,以供將來我和其他可能遇到同樣問題的人蔘考。 – Daan 2010-09-07 07:31:07

回答

4

問題是VS也嘗試編譯RDLC文件,只留下標記文件而不是原始的.rdlc文件。 ReportViewer無法處理這個問題,並引發錯誤。這在日誌中顯示爲:

報告定義無效。詳細信息:根級別的數據無效。行1,位置1.

解決方案是將原始RDLC文件複製到部署的應用程序。這可以在後期製作步驟中自動完成。有關該錯誤的詳細信息,請參閱this thread,有關詳細信息如何編輯Web部署項目的生成後步驟,請參見this post。我在Web部署項目文件中添加了以下內容:

<ItemGroup> 
    <ReportFiles Include="$(SolutionDir)Path\To\Reports\*.rdlc" /> 
</ItemGroup> 
<Target Name="AfterBuild"> 
    <Copy SourceFiles="@(ReportFiles)" DestinationFolder=".\Release\Reports\" /> 
</Target> 
+0

這似乎是一個有趣的話題,但它可能有一些更好的文章。我相信我們建議卸載該項目,然後編輯它添加類似於上述內容,對嗎? 令人困惑的是,發佈配置文件具有相同的架構,並且幾乎看起來像是另一個目標。 – Greg 2015-12-01 22:14:24

0

這可能不是確切的解決方案。我在VS2013嘗試這樣的預編譯的發佈過程的一部分,不建:

http://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx

展開文件發佈選項,然後發佈期間選擇預編譯。

生成後事件在發佈/預編譯過程之前運行,所以.rdlc文件在它將被預編譯之前被複制。至少,這對我來說很像。

0

你的回答沒」爲我工作。以下工作爲我在aspnet_compiler運行後複製文件。

<Target Name="AdditionalFilesForPackage" AfterTargets="CopyAllFilesToSingleFolderForPackage;CopyAllFilesToSingleFolderForMsDeploy"> 
    <ItemGroup> 
    <ExtraFiles Include="$(MSBuildProjectDirectory)\Path_To_Dir\**\*" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(ExtraFiles)" DestinationFiles="@(ExtraFiles->'$(_PackageTempDir)\Path_To_Dir\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" /> 
</Target> 
相關問題