泥庭

2011年2月18日

Application Development Overview

Filed under: .NET, WPF — タグ: , , — yone64 @ 1:26 AM

WPFを使い始めて早3ヶ月ぐらい。何となくわかってきた気もするがまだまだ全然わかんない箇所も多い。
そこで、改めてMSDNを見直すことにしてみました。せっかくなので過程を残していこうかと。

Windows Presentation Foundation

http://msdn.microsoft.com/ja-jp/library/ms754130.aspx

概要(WPF)はいいよね。ってことで、Application Developmentから。

Application Development Overview

Windows Presentation Foundation (WPF) は、次の種類のアプリケーションの作成をサポートします。

  • スタンドアロン アプリケーション (クライアント コンピューターにインストールし、そこから実行できる実行可能アセンブリとしてビルドされた従来スタイルの Windows アプリケーション)。

  • XAML ブラウザー アプリケーション (XBAP) (Windows Internet Explorer によってホストされる閲覧可能な実行可能アセンブリとしてビルドされた移動可能ページで構成されるアプリケーション)。

  • カスタム コントロール ライブラリ (再利用可能なコントロールを含む非実行可能アセンブリ)。

  • クラス ライブラリ (再利用可能なクラスを含む非実行可能アセンブリ)。

http://msdn.microsoft.com/ja-jp/library/bb613549.aspx

つまり、下図で四角で囲んだ部分が関係あるわけですね。
image
WPFアプリケーションは、スタンドアロンアプリケーション。
WPFブラウザーアプリケーションは、XAMLブラウザーアプリケーション。(そういえば、今はブラウザなのね)。
WPFカスタムコントロールライブラリとWPFユーザーコントロールライブラリ(もだよね)は、カスタムコントロールライブラリ。
クラスライブラリは、クラスライブラリ。といったところでしょうか。

せっかくなので各プロジェクトテンプレートの違いも見てみましょう。
まず実行可能アセンブリである、WPFアプリケーションとWPFブラウザーアプリケーション。
#XBAPってあまり聞かないんですが、世間ではどの程度使われているんでしょうか?やっぱりSilverlightの方がメジャーですよね。
(その1)プロジェクトに含まれるファイルの違い 左がWPFアプリケーション、右がWPFブラウザーアプリケーション
image
WPFアプリケーションでは、MainWindow.xaml。WPFブラウザーアプリケーションではPage1.xamlが含まれています。
WindowsアプリとWeb(ブラウザホスト)アプリの違いですね。
また、WPFブラウザーアプリケーションには、ブラウザ上で動作させるために必要なのでしょう、pfxファイルが含まれています。
(その2)csprojの違い
csproj内の設定項目を比較してみました。
WPFブラウザーアプリケーションは、ブラウザ内で動作するためにか、いくつか設定が増えていますね。

スタンドアロン XBAP
Configuration
Platform
ProductVersion ×
SchemaVersion
ProjectGuid
OutputType
AppDesignerFolder
RootNamespace
AssemblyName
TargetFrameworkVersion
TargetFrameworkProfile
FileAlignment
ProjectTypeGuids
WarningLevel
EnableSecurityDebugging ×
Install ×
StartAction ×
HostInBrowser ×
BootstrapperEnabled ×
TargetZone ×
GenerateManifests ×
SignManifests ×

WPFブラウザーアプリケーションのcsprojファイルの設定については、
方法: WPF XAML ブラウザー アプリケーションのサンプル プロジェクト ファイルを作成する」にも、詳しく載っていました。
ただし、StartActionがリンク先ページと実際に作成されたデータで異なってます。なぜ~

さて次は、非実行可能アセンブリのWPFカスタムコントロールライブラリとWPFユーザコントロールライブラリとクラスライブラリの比較。
(その1)プロジェクトに含まれるファイルの違い 左からWPFカスタムコントロールライブラリ・WPFユーザーコントロールライブラリ・クラスライブラリ
image
WPFカスタムコントロールライブラリには、カスタムコントロールとGeneric.xamlが含まれています。
WPFユーザーコントロールライブラリには、ユーザーコントロールが含まれています。
クラスライブラリには、通常のクラスが含まれています。
そのままですね。
(その2)csprojの違い

カスタム
コントロール
ユーザー
コントロール
クラス
ライブラリ
Configuration
Platform
ProductVersion
SchemaVersion
ProjectGuid
OutputType
AppDesignerFolder
RootNamespace
AssemblyName
TargetFrameworkVersion
TargetFrameworkProfile ×
FileAlignment
ProjectTypeGuids ×
WarningLevel ×

WPFカスタムコントロールライブラリとWPFユーザコントロールライブラリには設定項目に違いはありません。
対して、クラスライブラリは一部設定項目が少ないです。中でも一番大きな違いは、ProjectTypeGuidsですね。
(ProjectTypeGuidsについては
http://www.mztools.com/Articles/2008/MZ2008017.aspxがくわしいです。)
WPFカスタムコントロールライブラリとWPFユーザコントロールライブラリには、WPFを表す{60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}と、Windows (C#)を表す{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}が設定されていました。
この違いがどこに現れるかというと、プロジェクトの追加メニューの中身が変わるようです。(そのほかにもあるかもしれません。)
image
ProjectTypeGuidsでWPFが指定されていないクラスライブラリでは、追加メニューで表示される項目がWinFormの項目になっています。

とりあえず今回はここまで。最初からこの量とか、絶対このペースでは続かないなきっと。

広告

1件のコメント »

  1. […] Application Development OverView […]

    ピンバック by アプリケーション管理の概要 – アプリケーションの有効期間(前編) « 泥庭 — 2011年4月7日 @ 9:53 PM


RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。