WPF Applicationオブジェクトをマークアップに変更する

前回の「MSBuildコンパイルしてみた」で作成したprogram.csをマークアップに変更します。

 

ginka.hatenadiary.jp

xamlファイル(app.xaml)を作成します。

<Application
  xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >
  <Application.MainWindow>
    <Window Title='Hello World' Visibility='Visible' />
  </Application.MainWindow>
</Application>

Windowを定義する場合は、Application.MainWindowを定義します。

今回はアプリケーション定義内でWindowを定義していますが一般的には

別のxamlファイルを作成します。

program.csは必要ないので削除します。

 

Test.csprojを変更します。

<Compile Include='program.cs' />を<ApplicationDefinition Include='app.xaml' />に変更します。

 

ビルドは前回の内容と同じです。

WPFではコードを記述する代わりに宣言型でプログラミングを行えるようになっています。

WPF MSBuildでコンパイルしてみた。

統合開発環境を使わないでソースファイル等を用意し、MSBuildコンパイルしてみました。

MSBuildの場所はインストール方法によって変わりますが下記にあると思います。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe

MSBuildはFramework SDKVisual Studioなど、一緒にインストールされます。

 

ではソースを用意します。

まずはprogram.csを作成します。

using System.Windows;
using System;

class Program {
  [STAThread]
  static void Main() {
    Application app = new Application();
    Window w = new Window();
    w.Title = "Hello World";
    app.Run(w);  
  }
}

 

次にTest.csprojを用意します。

<Project
  DefaultTargets='Build'
  xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>

  <PropertyGroup>
    <Configuration>Debug</Configuration>
    <Platform>AnyCPU</Platform>
    <RootNamespace>Test</RootNamespace>
    <AssemblyName>Test</AssemblyName>
    <OutputPath>.\bin\Debug\</OutputPath>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include='System' />
    <Reference Include='WindowsBase' />
    <Reference Include='PresentationCore' />
    <Reference Include='PresentationFramework' />
  </ItemGroup>

  <ItemGroup>
    <Compile Include='program.cs' />
  </ItemGroup>

  <Import Project='$(MSBuildBinPath)\Microsoft.CSharp.targets' />
  <Import Project='$(MSBuildBinPath)\Microsoft.WinFX.targets' />
</Project>

 

コマンドラインMSBuild Test.csprojでコンパイルできます。

Test.csprojの内容によって出力先は変わります。

 

SourceTreeをインストールしてみました。

SourceTreeをインストールしてみました。

SourceTreeは MacWindows で使える、開発者のための強力な Git/Mercurial デスクトップ クライアントです。

下記からダウンロードできます。

https://www.atlassian.com/ja/software/sourcetree/overview

f:id:GraySilverCoin:20150524112157p:plain

ダウンロードしたらインストールは簡単です。

特に迷うところはないと思います。

HTTP/2のRFCが公開されたようです。。。

HTTP/2が公開されたようですね。

・Hypertext Transfer Protocol Version 2 (HTTP/2)
 http://www.rfc-editor.org/rfc/rfc7540.txt

・HPACK: Header Compression for HTTP/2
 http://www.rfc-editor.org/rfc/rfc7541.txt

 

HTTP/1.1が承認されたのは1999年。

HTTP/1.1は設計がシンプルで素晴らしいです。

シンプルな設計って大事ですね。

これからHTTP/2も注目していきたいと思います。

HTTP/1.1の基本的な部分を勉強するのであれば

技術評論社の「Webを支える技術」がお勧めです。 

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 

Ubuntu15.04にMonoをインストールする

UbuntuC#を利用したいのでMonoをインストールしてみたいと思います。

 

sudo apt-cache policy mono-mcsでバージョンを確認します。

下記のバージョンがインストールされるようです。

mono-mcs:
  インストールされているバージョン: (なし)
  候補:               3.2.8+dfsg-4ubuntu4
  バージョンテーブル:
     3.2.8+dfsg-4ubuntu4 0
        500 http://jp.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages

 

 sudo apt-get install mono-mcsでインストールします。

問題なくインストールできました。

 

 

 

 

CoreCLRをUbuntu15.04でビルド

CoreCLRをUbuntu15.04でビルドしたいと思います。

下記の準備が必要です。

・LDLB

LLVMのデバッガ

インストールは「$ sudo apt-get install lldb-3.6 lldb-3.6-dev 」

 

LLVM/Clang

Clangはソースコードを入力として字句解析を行う。LLVMと共に提供されるコンパイラフロントエンド。LLVMは環境や指定に合わせたマシン語生成。

インストールは「$ sudo apt-get install llvm-3.5」「sudo apt-get install clang-3.5 」

 

 ・CMake

コンパイラに依存しないビルド自動化のためのフリーソフトウェア

インストールは「$ sudo apt-get install cmake」

 

・libunwind

プログラムのコールチェーンを決定/操作するためのツール

インストールは「$ sudo apt-get install libunwind8 libunwind8-dev」

 

※米Microsoftは4月13日、LLVMベースのコンパイラ「LLILC」を発表しています。

このコンパイラは.NETで使われる中間コードをネイティブな実行可能コードに変換するコンパイラ。現時点ではWindowsのみ。

 

・Gitクライアントをインストールします。

インストールは「$ sudo apt-get install git-core」

 

上記の準備が終わったらCoreCLRをビルドしたいと思います。 

・CoreCLRリポジトリの内容をローカルにクローンします。

git clone https://github.com/dotnet/coreclr

 

・ディレクトリを$ cd coreclrで変更後に下記のコマンドを実行します。

$ ./build.sh

上記はデバッグモードなのでリリースモードは下記の通りです。

$ ./build.sh amd64 release

 

※少し時間がかかります。

...36%を過ぎた時点でディスク容量が足りないメッセージが...あっちゃー。

順調だったのにな...しかたないので強制終了です。

近いうちにハードディスクを購入して、出直します。残念...

容量を確保して無事にビルドできました。

 

GCJITは下記のライブラリに含まれています。

/coreclr/bin/Product/Linux.x64.Debug/libcoreclr.so

 

CoreCLR環境ではcorerunファイルからプログラムが起動されます。

/coreclr/bin/Product/Linux.x64.Debug/corerun

./corerun aaaa.exeのように利用します。

 

mscorlib.dllも必要ですが、まだLinuxで作成できないようです。

We don't yet have support for building managed code on Linux, so you'll need a Windows machine with clones of both the CoreCLR and CoreFX projects.

You will build  mscorlib.dll  out of the coreclr repository and the rest of the framework that out of the corefx repository. For mscorlib (from a regular command prompt window) run:

Windwosでmscorlib.dllを作成します。

CoreCLRリポジトリの内容をローカルにクローンします。

f:id:GraySilverCoin:20150510204646p:plain

build.cmd linuxmscorlibでmscorelib.dllを作成します。

f:id:GraySilverCoin:20150510205203p:plain

C:\GitHub\coreclr\bin\Product\Linux.x64.Debugに作成されます。