WPF 超入門 〜番外編「エッセンシャル WPF その弐 」
前回は「エッセンシャル WPF」の第一章の冒頭 「新しい GUI として WPF」 におけるサンプルコードの実行方法について記述しました。今回は「エッセンシャル WPF」17頁の「WPF ツアー」の実行方法について少し書きたいと思います。
エッセンシャルWPF:Windows Presentation Foundation (Programmer's SELECTION)
- 作者: Chris Anderson,星睦
- 出版社/メーカー: 翔泳社
- 発売日: 2007/10/31
- メディア: 大型本
- 購入: 6人 クリック: 128回
- この商品を含むブログ (32件) を見る
本書の39頁に「アプリケーション構築用のツール」として書いてあるのですが、これだけ読んだだけでは初心者の方には判りづらいと思われます。また、Visual Studio でいちいちプロジェクトを作るのも面倒ですし理解も深まりません。ここは本書のとおり MSBuild を使ってプロジェクトをコンパイルする方向で進めたいと思います。
全般
MSBuild.exe によるコンパイル
本書のサンプルコードを実行するには、MSBuild.exe を使った方が楽ですし、Visual Studio に依存してるうちは見えない部分の理解も深まると思われます。秀丸等の多機能エディタを使うとコーディングも楽なので、メモ帳しか使ってない方は是非秀丸を導入しましょう。
MSBuild.exe の場所
Visual Studio 2010 がインストールされている場合、MSBuild.exe の場所は
- C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319(64bit)
にあります。
バッチファイル
デスクトップにバッチファイルを作っておくと楽にビルドできます。バッチファイルの内容を
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild "C:\Projects\tour.csproj" PAUSE C:\projects\bin\debug\Tour.exe
とかにしとけば、後はこれをクリックするだけで OK。
注意事項
プロジェクトファイル
・サンプルコードのプロジェクトファイルですが、シングルクォーテーションをダブルクォーテーションに変更しても問題はありません。(Visual Studio により自動的に作成されるプロジェクトファイルでは ダブルクォーテーション です)
・プロジェクトファイルの
・
以下、プロジェクトファイルの初期設定(18頁)です。
tour.csproj
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Debug</Configuration> <Platform>AnyCPU</Platform> <RootNamespace>Tour</RootNamespace> <AssemblyName>Tour</AssemblyName> <OutputType>winexe</OutputType> <OutputPath>.\bin\debug</OutputPath> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Xaml" /> <Reference Include="WindowsBase" /> <Reference Include="PresentationCore" /> <Reference Include="PresentationFramework" /> </ItemGroup> <ItemGroup> <Compile Include="Program.cs" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.WinFX.targets" /> </Project>
ついでに初期設定の Program.cs ファイルです。
program.cs
using System; using System.Windows; class Program { [STAThread] static void Main() { Application app = new Application(); Window w = new Window(); w.Title = "Hello World"; app.Run(w); } }
これをコンパイルして実行すると、こうなります。
XAMLファイル
・サンプルコードの XAML ですが、シングルクォーテーションをダブルクォーテーションに変更しても問題ありません。通常、XAML のコードはダブルクォーテーションを使うので、個人的には慣れるためにもダブルクォートを推奨します。
・XAML ファイルは必ず文字コードを UTF-8 にして保存すること。でないと、XAML に日本語を含む場合、エラー MC3000:「XML 指定されたエンコードに無効な文字があります。」が発生します。
・大文字小文字の違いには注意してください。
以下、21頁のサンプルコードです。
app.xaml
<Application xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" StartupUri = 'MyWindow.xaml' > </Application>
MyWindow.xaml
<Window xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" Title = "Hello World" > <Button>こんにちは</Button> </Window>
以下、変更されたプロジェクトファイル(21頁)です。
tour.csproj
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Debug</Configuration> <Platform>AnyCPU</Platform> <RootNamespace>Tour</RootNamespace> <AssemblyName>Tour</AssemblyName> <OutputType>winexe</OutputType> <OutputPath>.\bin\debug</OutputPath> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Xaml" /> <Reference Include="WindowsBase" /> <Reference Include="PresentationCore" /> <Reference Include="PresentationFramework" /> </ItemGroup> <ItemGroup> <Page Include="mywindow.xaml" /> <ApplicationDefinition Include="app.xaml" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
これをコンパイルして実行すると、こうなります。
後は順次 MyWindow.xaml の内容を編集するだけでOKです。
で、32頁までのサンプルをコーディングしてみるとこうなる・・・