VS2008 Web アプリケーション プロジェクトを更新せずにプリコンパイルしています。ReportViewer を使用して RDLC レポートを表示するページを読み込もうとすると、空のページが表示されます。プリコンパイルされていないバージョンでは問題なく動作します。何が問題なのですか?
4 に答える
問題は、VS が RDLC ファイルのコンパイルも試行し、元の .rdlc ファイルではなくマーカー ファイルのみが残ることです。ReportViewer はこれを処理できず、エラーをスローします。これは、ログに次のように表示されます。
レポート定義が無効です。詳細: ルート レベルのデータが無効です。行 1、位置 1。
解決策は、元の RDLC ファイルをデプロイされたアプリケーションにコピーすることです。これは、ビルド後のステップで自動化できます。エラーの詳細については、このスレッドと、Web 配置プロジェクトのビルド後の手順を編集する方法の詳細についてのこの投稿も参照してください。Web Deployment プロジェクト ファイルに以下を追加しました。
<ItemGroup>
<ReportFiles Include="$(SolutionDir)Path\To\Reports\*.rdlc" />
</ItemGroup>
<Target Name="AfterBuild">
<Copy SourceFiles="@(ReportFiles)" DestinationFolder=".\Release\Reports\" />
</Target>
これは正確な解決策ではないかもしれません。私はVS2013でこれを試しましたが、プリコンパイルはビルドではなく公開プロセスの一部です:
http://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx
[ファイル発行オプション] を展開し、[発行中にプリコンパイル]を選択します。
ビルド後のイベントは公開/プリコンパイル プロセスの前に実行されるため、.rdlc
ファイルは (まだ) プリコンパイルされる前にコピーされます。少なくとも、私にはこのように見えます。