Krile をビルドする手順

この記事は Krile Advent Calendar 2014 の8日目の(7本目の)記事です。

ふと、Krile をビルドしてみようかなと思いました。せっかちな人は最後の項だけ見ればいいです。ここに書いてあるのは最短手順ではないです。自分のしたことを辿っています。

きっかけ

Krile Advent Calendar 2014 を見付けます。Visual Studio Community 2013 がとりあえずインストールだけされてあります。

ソースコードを落とす

GitHubソースコードがあります。Git 環境は適当に調えなさい。

$ git clone git@github.com:karno/StarryEyes.git

Visual Studio Community 2013 をインストールする

ここからダウンロードして、インストーラーを起動すればよいです。分からないオプションは全部チェックしとけばいいんじゃないですかね。

VS 2013 Express が入ってたらアンインストールした方がよさそうです。

自分の環境では Language Pack のインストール中に下記のエラーが出て、新規にインストールした Community と前から入ってた Express をアンインストールしてから再度インストールしてみましたが結局日本語化できませんでした。

プロジェクトを開く

git clone したリポジトリーのルートディレクトリーにある StarryEyes.sln ファイルを VS で開きます。

おもむろに、緑色の再生マークのアイコンのある Start ボタンを押します。エラーです。

Error    1   An exception occurred during a WebClient request.   StarryEyes.Nightmare
Error   2   The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568. C:\Users\kazuki\Programming\StarryEyes\StarryEyes.Albireo\StarryEyes.Albireo.csproj 108 5   StarryEyes.Albireo
Error   3   Metadata file 'C:\Users\kazuki\Programming\StarryEyes\StarryEyes.Albireo\bin\Debug\StarryEyes.Albireo.dll' could not be found   
…

めくるめくエラー

エラーメッセージ内のリンク先を見ます。.NET の知識皆無でよく分かりません。

git submodule が使わてることに気付きます。

$ git submodule init
$ git submodule update

アップデートのある NuGet のパッケージをアップデートします。エラーが変わります。

なんか MahApps ってやつが使われていることに気が付きます。VS の Tools > NuGet Package Manager > NuGet Packages for Solution... からインストールしてみます。エラーがまだあります。git submodule で参照してるものが MahApps だったことに気付きます。さっきインストールしたパッケージを消します。

Error    1   The tag 'MetroWindow' does not exist in XML namespace 'clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro'. Line 1 Position 23.    C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\AuthorizationWindow.xaml    1   23  StarryEyes
Error   2   The tag 'ProgressRing' does not exist in XML namespace 'http://metro.mahapps.com/winfx/xaml/controls'. Line 21 Position 14. C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\WorkingWindow.xaml  21  14  StarryEyes
Error   3   The tag 'MetroWindow' does not exist in XML namespace 'clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro'. Line 1 Position 23.    C:\Users\kazuki\Programming\StarryEyes\StarryEyes\Views\Dialogs\KeyOverrideWindow.xaml  1   23  StarryEyes
…

XAML の中で独自クラスをタグとして使うところでなにか失敗してるなーぐらいしか分かりません。とりあえず、その線でググってみます。(ビングりはしません。)

あきらめます。

昼寝します。

起きます。

最初からトライ

$ git reset --hard
$ git submodule init
$ git submodule update

ディレクトリーをまっさらにします。

VS で Start します。

Krile が起動します。

やったね。