Visual Studio 2022 で ReportViewer をフォームに貼り付けたのに、スマートタグに「新しいレポートのデザイン」が出てこない……という相談がとても増えています。本記事では、その理由と、実際に RDLC レポートを作成・表示するための具体的な手順、つまずきポイントのチェックリストをまとめて解説します。
Visual Studio 2022 の ReportViewer に「新しいレポートのデザイン」が出てこない理由
Visual Studio 2010〜2015 あたりまでの環境では、ReportViewer コントロールのスマートタグ(Tasks)から「新しいレポートのデザイン」を選び、そのままレポートウィザードを開いて RDLC を作成できることがありました。
しかし Visual Studio 2019 / 2022 では、以下のような事情により、同じ動線が利用できないケースが多くなっています。
- ReportViewer が Visual Studio の標準コンポーネントではなく、NuGet パッケージとして提供されるようになった。
- 新しい ReportViewer コントロール(
Microsoft.ReportingServices.ReportViewerControl.WinFormsなど)は、スマートタグから新規 RDLC を生成する機能を持っていないと考えられる。 - レポートデザイン機能自体も、拡張機能(RDLC Report Designer)として切り出されており、Visual Studio 本体とは別インストールになった。
そのため、Visual Studio 2022 + ReportViewer の組み合わせで「新しいレポートのデザイン」がスマートタグに表示されないのは、バグというより仕様変更・構成変更の結果である可能性が高いです。
ではどうすればよいかというと、結論としては次の流れになります。
- RDLC ファイルを プロジェクトに手動で追加する。
- 追加した RDLC を ReportViewer に手動で関連付ける。
- 必要に応じて RDLC デザイナ拡張機能をインストールする。
以下で、この手順を詳しく見ていきます。
前提環境と確認しておきたいポイント
まずは、現在の開発環境が ReportViewer + RDLC を使う前提を満たしているか確認しましょう。
| 項目 | 確認内容 | 推奨状態 |
|---|---|---|
| Visual Studio | エディションとバージョン | Visual Studio 2019 / 2022(最新アップデート) |
| ターゲット フレームワーク | .NET Framework / .NET のバージョン | NuGet の ReportViewer パッケージ対応バージョンであること |
| ReportViewer パッケージ | NuGet でインストール済みか | WinForms なら Microsoft.ReportingServices.ReportViewerControl.WinForms |
| RDLC デザイナ拡張機能 | 「Report Designer for RDLC」などがインストールされているか | RDLC を VS 上で編集したい場合は必須 |
特に、RDLC デザイナ拡張機能がない状態だと RDLC テンプレートが出てこないことがあるため、後述の手順もあわせて確認してください。
RDLC レポートを手動で追加する標準的な手順
スマートタグに頼らず、自分で RDLC を追加して ReportViewer に割り当てる手順を順に説明します。WinForms プロジェクトを例にしていますが、基本的な考え方は同じです。
NuGet で ReportViewer パッケージを導入する
まずは WinForms プロジェクトに ReportViewer コントロールを追加できるよう、NuGet パッケージをインストールします。
- ソリューション エクスプローラーで対象プロジェクトを右クリックし、[NuGet パッケージの管理] を開きます。
- [参照] タブで
Microsoft.ReportingServices.ReportViewerControl.WinFormsを検索します。 - 該当パッケージを選択してインストールします。
WebForms の場合は Microsoft.ReportingServices.ReportViewerControl.WebForms を選びます。WPF で使う場合は、WindowsFormsHost や ElementHost を利用して WinForms 版 ReportViewer を埋め込むのが一般的です。
RDLC ファイルをプロジェクトに追加する
次に、レポート定義ファイルである RDLC をプロジェクトに追加します。
- ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] → [新しい項目] を選択します。
- テンプレート一覧から [報告(Report)] または [Report] を探して選択します。
- ファイル名を指定し、
SalesReport.rdlcなど任意の名前で追加します。
もしこの段階で「Report」が一覧に出てこない場合は、RDLC デザイナ拡張が入っていない可能性が高いです。後述の「RDLC デザイナが表示されない場合の対処」を参照してください。
ReportViewer コントロールをフォームに配置する
まだフォームに ReportViewer を貼っていない場合は、以下の手順で追加します。
- フォーム デザイナを開き、ツールボックスを表示します。
- ツールボックスの「データ」等のカテゴリに ReportViewer コントロールが追加されていることを確認します。
- ReportViewer をフォーム上へドラッグ&ドロップします。
この時点で、従来のバージョンだとスマートタグに「新しいレポートのデザイン」が出ていましたが、Visual Studio 2022 + NuGet 版 ReportViewer では出てこないことが多い、というのが今回の悩みのポイントです。
ReportViewer に RDLC を紐付ける
RDLC の追加が完了したら、ReportViewer と RDLC ファイルを関連付けます。
- フォーム上の ReportViewer をクリックし、スマートタグ(三角形のアイコン)を開きます。
- [レポートの選択] や [Choose Report] といった項目を選択します。
- 一覧に先ほど追加した
*.rdlcファイルが表示されるので、選択します。
これで、デザイン上で ReportViewer と RDLC が紐付いた状態になります。あとは RDLC 内で使用するデータセット名と、コード側で設定するデータソース名を合わせれば、実行時にデータ付きでレポートが表示されます。
コードから RDLC とデータソースを設定する具体例
レポートを表示するためには、RDLC ファイルを指定し、レポートに渡すデータを ReportDataSource として設定する必要があります。ここでは、埋め込みリソースとして RDLC を扱う場合と、ファイルパスで指定する場合の両方を紹介します。
RDLC を埋め込みリソースとして扱う場合
まずは RDLC をプロジェクトの埋め込みリソースに設定します。
- 追加した
SalesReport.rdlcを選択します。 - プロパティ ウィンドウで Build Action を Embedded Resource に変更します。
その上で、フォームのコードビハインドで次のように設定します。
using Microsoft.Reporting.WinForms;
private void Form1_Load(object sender, EventArgs e)
{
// ダミーデータの例(実際には DB や API から取得)
var salesList = GetSalesList(); // List<Sales> など
reportViewer1.Reset();
// RDLC を埋め込みリソースとして指定
// 名前空間 + フォルダ + ファイル名.rdlc の形
reportViewer1.LocalReport.ReportEmbeddedResource =
"YourProjectNamespace.Reports.SalesReport.rdlc";
reportViewer1.LocalReport.DataSources.Clear();
// RDLC 側で定義した DataSet 名(右クリック「データセットのプロパティ」から確認)
var rds = new ReportDataSource("SalesDataSet", salesList);
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
ここで重要なのは、ReportDataSource の第 1 引数(”SalesDataSet”)が RDLC 側の DataSet 名と完全一致していることです。ここが一致していないと、実行時にデータが渡っていてもレポートには何も表示されません。
RDLC をファイルパスで指定する場合
RDLC をプロジェクトのコンテンツとして扱い、出力フォルダにコピーしておいてからファイルパス経由で読み込む方法もあります。
- RDLC ファイルの Build Action を Content に設定。
- コピー先ディレクトリ を 新しい場合はコピーする または 常にコピーする に設定。
その上で、以下のようにコードを書きます。
using System.IO;
using Microsoft.Reporting.WinForms;
private void Form1_Load(object sender, EventArgs e)
{
var salesList = GetSalesList();
reportViewer1.Reset();
// 実行ファイルと同じ階層に Reports フォルダを置く想定
string reportPath = Path.Combine(Application.StartupPath, "Reports", "SalesReport.rdlc");
reportViewer1.LocalReport.ReportPath = reportPath;
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(
new ReportDataSource("SalesDataSet", salesList));
reportViewer1.RefreshReport();
}
埋め込みリソース方式とファイルパス方式は一長一短があるので、プロジェクト運用ポリシーやデプロイ方法に合わせて選択するとよいでしょう。
埋め込みリソース方式とファイル方式の比較
| 方式 | 利点 | 注意点 |
|---|---|---|
| 埋め込みリソース | DLL 内に含まれるため、単一ファイル配布がしやすい | 名前空間+ファイル名の指定を間違えやすい、変更時に再ビルドが必要 |
| ファイルパス | レポートファイルだけを差し替える運用がしやすい | デプロイ時に RDLC ファイルのコピー漏れに注意が必要 |
RDLC デザイナが表示されない/テンプレートが見つからない場合の対処
「新しい項目」ダイアログに Report テンプレートが出てこない、RDLC を開いてもデザイナではなく XML テキストとして開いてしまう、といった場合は、Visual Studio に RDLC デザイナ拡張機能が入っていない可能性があります。
対処としては、次のように拡張機能を導入します。
- Visual Studio のメニューから [拡張機能] → [拡張機能の管理] を開きます。
- オンライン検索で “RDLC” や “Report Designer” などのキーワードで検索します。
- RDLC Report Designer 系の拡張機能をインストールします。
- Visual Studio を再起動します。
再起動後、「新しい項目」の一覧に [報告(Report)] が表示されるようになり、RDLC ファイルをダブルクリックするとデザイナで開けるようになります。
症状別のチェックポイント
| 症状 | 考えられる原因 | 確認・対処 |
|---|---|---|
| 「新しい項目」に Report が出ない | RDLC デザイナ拡張が未インストール | 拡張機能の管理から RDLC 関連をインストール |
| RDLC を開くと XML 表示になる | 関連付けがない/デザイナ拡張が無効 | 拡張機能が有効か確認し、再インストールも検討 |
| Report テンプレートはあるが ReportViewer が見つからない | NuGet パッケージ未導入、またはターゲットフレームワーク不一致 | 適切な ReportViewer パッケージをインストールし、フレームワークを確認 |
RDLC ファイルのビルドアクションと配置設定を理解する
ReportViewer で RDLC を読み込むときには、RDLC ファイルの Build Action と 出力ディレクトリへのコピー設定がとても重要です。ここを誤ると、「ファイルが見つからない」「デバッグでは動くがリリースで動かない」といった問題の原因になります。
| 用途 | Build Action | 出力ディレクトリへのコピー | 備考 |
|---|---|---|---|
| 埋め込みリソースとして利用 | Embedded Resource | 不要 | アセンブリに埋め込まれるため、ファイルコピーは不要 |
| ファイルパスで参照 | Content | 新しい場合はコピーする/常にコピーする | 実行ファイルと一緒に RDLC を配布する必要がある |
プロジェクトの規模が大きくなると、レポートファイルを外部リソースとして管理した方が差し替えが簡単になることも多いので、運用ポリシーに合わせてどちらかを選択してください。
データが表示されない場合のチェックリスト
「ReportViewer に RDLC は割り当てたのに、実行してもまっ白」「項目名だけ出るがデータが 0 行」といったときに確認したいポイントを一覧にまとめます。
| チェック項目 | 説明 |
|---|---|
| DataSet 名の一致 | ReportDataSource の名前と RDLC 側の DataSet 名が完全一致しているか |
| データ件数 | 渡しているコレクションや DataTable に本当にレコードが入っているか |
| RefreshReport の呼び出し | reportViewer1.RefreshReport() を最後に呼んでいるか |
| 例外の有無 | 実行時に例外が発生していないか(Output ウィンドウやログを確認) |
| RDLC のフィルタ | RDLC 内でフィルタ条件が設定されておらず、全件が除外されていないか |
とくに DataSet 名の不一致 はもっとも多い原因です。RDLC デザイナで「レポートデータ」ウィンドウを表示し、利用している DataSet 名(例: SalesDataSet)を確認してからコード側を書き直すと解決することが多いです。
古いバージョンとの仕様差を理解して設計方針を決める
「昔は ReportViewer のスマートタグから『新しいレポート』をクリックするだけでレポートが作れたのに、なぜ今はできないのか」という疑問はもっともですが、視点を変えると次のようなメリットもあります。
- レポートファイル(RDLC)を UI から独立して管理しやすくなる。
- レポートの追加・変更をソリューション構造で整理しやすい(
Reportsフォルダなど)。 - ReportViewer のバージョン管理が NuGet ベースになるため、更新やロールバックが行いやすい。
実務プロジェクトでは、次のような設計をしておくと運用が楽になります。
Reportsフォルダを作成し、その中に RDLC をまとめて配置する。- ファイル名や DataSet 名に一貫した命名規則を持たせる(例:
SalesSummaryReport.rdlc,SalesSummaryDataSet)。 - レポートごとに ViewModel クラスや DTO を用意して、データ構造を明確にする。
- 共通の表示ロジック(ReportViewer の初期化、言語設定など)をヘルパークラスに切り出す。
このように、「スマートタグで一発作成」はなくなったものの、設計と運用を意識したプロジェクト構成を取りやすくなった、とも捉えられます。
実務で役立つ RDLC 設計と運用のコツ
最後に、Visual Studio 2022 + ReportViewer + RDLC を本番運用していくうえでのちょっとしたコツをまとめます。
命名規則を徹底する
- レポート名、DataSet 名、DataSource 名を関連づけて命名する(例:
InvoiceReport/InvoiceDataSet/InvoiceDataSource)。 - 「レポートを見るだけで何の帳票かわかる」名前にする(
MonthlySalesSummaryReportなど)。
テスト用のダミーデータを用意しておく
- デザイン時に RDLC に直接ダミーの DataSet を設定しておくと、データがない状態でも見た目を確認しやすい。
- コード側でも、デバッグビルド時にのみダミーデータを流し込むスイッチを用意しておくと検証が楽になる。
バージョン管理を活用する
- RDLC ファイルはただの XML なので、Git などでバージョン管理しておくと差分追跡がしやすい。
- 帳票仕様変更が頻繁なプロジェクトでは、変更履歴を README と一緒に残しておくとレビューしやすい。
デプロイ時のチェックリストを作る
- ファイル方式の場合、RDLC が配布パッケージに含まれているか。
- 埋め込みリソース方式の場合、参照先の名前空間やファイル名が変わっていないか。
- ターゲット環境に必要なランタイム/ReportViewer の依存 DLL が正しく配置されているか。
スマートタグから新規レポートを作れないことへの根本的な対処
現状の Visual Studio 2019 / 2022 + ReportViewer では、古いバージョンのように「スマートタグから『新しいレポートのデザイン』を起動する」機能は見当たりません。そのため、
- RDLC はプロジェクトに直接追加する(本記事で紹介した手順)。
- ReportViewer への関連付けも手動で行う。
という運用に慣れてしまうのが、もっとも現実的な解決策です。
もしどうしても「スマートタグから新規レポートを開きたい」「従来と同じ UX を取り戻したい」という要望がある場合は、次のようなアプローチも検討できます。
- 自作の Visual Studio 拡張機能やテンプレートで、レポート作成のショートカットを用意する。
- チーム内の標準テンプレートプロジェクトに、よく使う RDLC を最初から含めておく。
- Visual Studio / SSRS のフィードバック機能や開発者コミュニティ経由で、Microsoft に機能要望として投げる。
ただし、現時点では公式に旧来のスマートタグ機能が復活している情報はあまり見られないため、当面は「RDLC を手動で追加し、ReportViewer に選択する」というワークフローを前提に設計しておくのが安全です。
まとめ:Visual Studio 2022 では「手動で RDLC を作って選ぶ」のが基本
本記事のポイントを整理すると、次のようになります。
- Visual Studio 2022 の ReportViewer では、スマートタグに「新しいレポートのデザイン」が表示されないことが多い。
- これは仕様変更・コンポーネント構成の変更によるもので、バグとは言い切れない。
- 代わりに、RDLC ファイルをプロジェクトへ手動追加 → ReportViewer でその RDLC を選択する手順が標準的なワークフローになる。
- コードから RDLC を指定する場合は、埋め込みリソース方式とファイルパス方式のどちらかを選択し、DataSet 名の一致と
RefreshReport()の呼び出しを忘れない。 - RDLC デザイナ拡張機能がないと Report テンプレートやデザイナが利用できないので、拡張機能のインストールも重要。
「スマートタグから一発でレポート作成」ができないのは少し不便に感じますが、その分プロジェクト構造やレポート設計を意識して整理しやすくなります。Visual Studio 2022 の ReportViewer で RDLC レポートを扱う際の標準パターンとして、本記事の手順を開発チーム内のルールに組み込んでおくと、今後のトラブル回避と保守性向上につながるはずです。

コメント