.NET TIPS

WPFアプリケーションに含まれるXAMLファイルの内容を確認するには?

デジタルアドバンテージ 遠藤 孝信
2008/11/13

 .NET Reflector*1を使えば、.NETで作成されたアプリケーションを逆コンパイルし、そのソース・コードを確認することができる。

*1 現在の正式名称は「Red Gate's .NET Reflector」。本稿執筆時点の最新バージョンは「5.1.4.0」。.NET Reflectorについては「.NET Tools:.NET逆コンパイラとコードを難読化するDotfuscator」で解説している。

 ただし、アプリケーションがWPFアプリケーションの場合、ユーザー・インターフェイスを定義しているXAMLのコードについては、単にBAML形式のリソース(バイナリ化されたXAMLファイル)として表示されるため、その内容までは確認できない(画面1)。


画面1 BAML形式のリソースとして表示されるXAMLファイル
WPFアプリケーションの場合、XMALにより記述されたコードは、バイナリであるBAML形式として実行ファイルに格納される。なお、この画面で扱っているLinqToXmlDataBinding.exeはVisual Studio 2008に含まれているサンプル・アプリケーションである(付属するCSharpSamples.zipに含まれている)。.NET Reflectorで実行ファイルを開くには、エクスプローラから.NET Reflector上に実行ファイルをドラッグ&ドロップすればよい。

 しかし、.NET Reflectorに「BAML Viewer」というアドイン(Add-In)を追加すれば、BAML形式のリソースを展開し、元のXAMLコードを確認することができるようになる。

 以下の画面2は、実際にBAML Viewerを使って、WPFアプリケーションに含まれるXAMLのソース・コードを表示しているところだ。


画面2 BAML ViewerによるXAMLコードの表示

 本稿では、このBAML Viewerのダウンロードから起動までについて紹介する。

BAML Viewerのインストールと実行

 .NET Reflectorについては、多くのユーザーによって、たくさんのアドインが開発されており、BAML Viewerもその1つである。アドインの多くは「.NET Reflector Add-Ins」に集められている(画面3)。


画面3 CodePlex内にある.NET Reflector用アドインのページ

 ページ内のアドイン一覧から「BamlViewer」をクリックすると、BAML Viewerのページに移動する(画面4)。


画面4 BAML Viewerのページ

 BAML Viewerのダウンロードは、「Reflector 5.0 Add-Ins」のページで、「BamlViewer.zip」のリンクをクリックする。

 BamlViewer.zipをダウンロードしたら、これに含まれている「Reflector.BamlViewer.dll」を適当なフォルダ(Reflector.exeと同じフォルダなど)に展開する。

 次に、.NET Reflectorを実行し、メニューの[View]−[Add-Ins]を選択して[Add-Ins]ダイアログ(画面5)を開き、[Add]ボタンをクリックして、いま展開した「Reflector.BamlViewer.dll」を追加する。そして[Close]ボタンにより[Add-Ins]ダイアログを閉じる。


画面5 [Add-Ins]ダイアログで追加したBAML Viewerのアドイン
メニューの[View]−[Add-Ins]により開く。[Add]ボタンをクリックして、「Reflector.BamlViewer.dll」を追加する。

 これでアドインの設定は完了だ。この状態でメニューの[Tools]を開くと、[BAML Viewer]という項目がメニュー末尾に追加されているはずだ(画面6)。


画面6 [Tools]メニューに追加された[BAML Viewer]

 後はこの[BAML Viewer]を実行すれば、冒頭の画面2のような[BAML Viewer]ウィンドウが開き、BAML形式のリソースを選択することにより、その下にXAMLのコードが表示される。End of Article

利用可能バージョン:.NET Framework 3.0以降
カテゴリ:WPF/XAML 処理対象:ツール

この記事と関連性の高い別の.NET TIPS
JSON形式のデータの内容を確認するには?(JSON Viewer活用)
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間