web-dev-qa-db-ja.com

RDLCファイルの公開

WPFアプリケーションにいくつかのRDLCファイルがあります。プロジェクトを公開するとレポートファイルが公開されず、クライアントでアクセスしようとすると、ファイルが見つからないというエラーメッセージが表示されます。私は公開フォルダを確認しましたが、実際にはありません。次のコードでRDLCファイルを呼び出します。

Microsoft.Reporting.WinForms.ReportViewer rvReportViewer;
/* ... */
rvReportViewer.LocalReport.ReportPath = string.Format("Reports/{0}.rdlc", ReportName);

これらのビルドアクションを「リソース」に設定してみましたが、これは私が静的イメージファイル用に持っているものですが、それでも何の違いもないようです。

レポートが発行ディレクトリにコピーされないのはなぜですか?これを強制する方法はありますか、それとも他の方法でアクセスする必要がありますか?

ありがとう!

30
Jake

RDLCファイルに特別な懸念があるかどうかはわかりませんが、他のファイルを確実に公開するための一般的な方法は次のとおりです。

ソリューションエクスプローラーでファイルを右クリックし、[プロパティ]を選択します。 [ビルドアクション]を[コンテンツ]に、[出力ディレクトリにコピー]を[新しい場合はコピー]に設定します。

プロジェクトのプロパティ->発行ページに移動します。 「アプリケーションファイルボタン」を押し、「すべてのファイルを表示する」にチェックを入れます。 [発行ステータス]を[含める(自動)]に設定します

ファイルのプロパティ

File Properties

アプリケーションファイル

Publish Properties

41
nos

私はしばらく@nosの回答を使用していますが、出版物では.rdlc-filesのセットが2つの場所にコピーされていることに気付きました。

  1. 元のWebアプリケーションプロジェクトの相対的な場所。
  2. Binフォルダー内。

したがって、\ Reports\Report1.rdlcがある場合、公開された場所で次のようになります。

 1. <published folder>\Reports\Report1.rdlc;
 2. <published folder>\bin\Reports\Report1.rdlc.

2番目の場所にあるrdlcのコピーを使用するつもりはありません。実際、これらを削除しても、レポートは引き続き生成されます。

各rdlcファイルの設定を次のように変更しました。

Build Action: Content;
Copy to Output Directory: Do not copy.

そして、2番目の場所には何も書き込まれません。

36
R. Schreurs

申し訳ありませんが、これは「常にコピー」または「新しい場合はコピー」とは関係ありません。実際、「コピーしない」に設定しました。この問題は、ビルドアクションを「組み込みリソース」から「コンテンツ」に変更することで解決されます。次に、RLDCファイルをビルドして公開すると、適切な場所にコピーされます。

8
tbirangi

.ReportPathを使用する代わりに

  1. **次のコードを使用しました:

reportViewer1.LocalReport.ReportEmbeddedResource="[Project
Name].[FolderName if Exist].[ReportName].rdlc";
  1. 次に、デプロイメントプロジェクトを再ビルドします。
2