.NETアプリケーションをMacで開発してAzureにデプロイする

# 開発環境
OS: OS X Yosemite 10.10.5
Visual Studio: Visual Studio Code Version 0.10.11 (0.10.11)
nodejs: node-5.1.0
Yeoman: 1.7.0

# .NET環境のインストール
ASP.NETのリポジトリを追加
`$ brew tap aspnet/dnx`

パッケージをアップデート
`$ brew update`

.NETバージョンマネージャ「dnvm」をインストール
`$ brew install dnvm`

# 起動スクリプトの設定
毎回、自動で読み込まれるように設定
`$ echo source dnvm.sh >> ./bash_profile`

# .NETバージョンマネージャ「dnvm」の起動
dnvmの起動
`$ dnvm`
<img width="682" alt="スクリーンショット 2016-03-24 13.57.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/45576407-c1d5-a010-572c-3ae2ad28d116.png">

最新の.NET frameworkに更新
`$ dnvm upgrade`

# Node.jsとYeomanのインストール
nodejsのインストール
`$ brew install node`

npmで、Yeomanのインストール
`$ npm install -g yo`

npmで、ASP.NETのジェネレータをインストール
`$ npm install -g generator-aspnet`

# YeomanでASP.NETのソースを生成
`$ yo aspnet`

```
? ==========================================================================
We're constantly looking for ways to make yo better! 
May we anonymously report usage statistics to improve the tool over time? 
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes

     _-----_===========================
    |       |    .--------------------------.
    |--(o)--|    |      Welcome to the      |
   `---------´   |   marvellous ASP.NET 5   |
    ( _´U`_ )    |        generator!        |
    /___A___\    '--------------------------'
     |  ~  |     
   __'.___.'__   
 ´   `  |° ´ Y ` 
? What type of application do you want to create? Empty Application
? What's the name of your ASP.NET application? MyWebAPI
   create MyWebAPI/.gitignore
   create MyWebAPI/Startup.cs
   create MyWebAPI/project.json
   create MyWebAPI/Dockerfile
   create MyWebAPI/wwwroot/README.md
   create MyWebAPI/wwwroot/web.config
```

# プログラムの実行
階層移動
`$ cd MyWebAPI`

dnuコマンドで、依存するDLLをnugetサーバーから取得
`$ dnu restore`

dnuコマンドで、ビルドを実行
`$ dnu build`

# Visual Studio Codeをターミナルから呼び出せるようにする
.bash_profileに下記を追記する

```lang:.bash_profile
code () {
    if [[ $# = 0 ]]
    then
        open -a "Visual Studio Code"
    else
        [[ $1 = /* ]] && F="$1" || F="$PWD/${1#./}"
        open -a "Visual Studio Code" --args "$F"
    fi
}
```

ターミナル再起動後にプロジェクトのrootディレクトリに戻りVisual Studio Codeを起動する
`$ code .`

<img width="1136" alt="スクリーンショット 2016-03-29 9.00.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/1241f04f-4204-1a61-7bf5-efc5acb8353f.png">

# ローカルでのプログラムの実行
Visual Studio Code上でCommand + shift + pによりコマンドパレットを起動する

dnxとコマンドして下記を選択
`>dnx: Run Command`

さらに下記を選択
`>dnx web - (SampleWebApp)`

ブラウザを開きhttp://localhost:5000/ にアクセスする
Hello World!と表示されていればローカルでの実行は成功です。

# WebアプリをAzure上にデプロイする

Azureポータルにログインして『新規』 → 『Web + モバイル』 → 『Web App』を選択

<img width="558" alt="スクリーンショット 2016-03-29 9.21.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/fb2870d5-1a61-58de-90ca-0ce67a618659.png">

各項目を入力して作成ボタンを押す

# 新しい Web アプリの Git 発行の有効化

『参照』 → 『App Service』を選択

<img width="693" alt="スクリーンショット 2016-03-29 9.34.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/7ae7aac8-fc6c-a84b-5a46-826c1e1456da.png">

先ほど作成したWebアプリを選択し、設定から『継続的なデプロイ』を選択

<img width="910" alt="スクリーンショット 2016-03-29 9.36.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/b9e4e82f-0064-86c2-e356-f7bf7e09a927.png">

『ソースの選択』 → 『ローカルGitリポジトリ』を選択

<img width="951" alt="スクリーンショット 2016-03-29 9.38.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/69419b89-7e95-0fae-f8b9-20da3835c8b9.png">

『基本認証のセットアップ』を選択して各項目を入力してOKを押し設定を保存する

<img width="955" alt="スクリーンショット 2016-03-29 9.40.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/51be24ae-8cdd-6068-6b1e-4bf460a37a31.png">

設定 → 『デプロイ資格情報』を選択して各項目を入力して保存

<img width="907" alt="スクリーンショット 2016-03-29 10.06.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/df33777d-7820-a21a-ca2a-de5f36954501.png">

設定のプロパティを開き、GIT URLをコピーしておく

<img width="643" alt="スクリーンショット 2016-03-29 9.48.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/f3392299-c7fc-ffa6-1960-7b8c790998ca.png">

# Azure App Service への Web アプリの発行

VSCodeの左側のナビゲーションバーからGitオプションを選択する

<img width="36" alt="スクリーンショット 2016-03-29 9.52.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/100746/3fa3bbfc-eb5e-b4ea-0dd0-a63aad0de102.png">

『initialize git repository』を選択してワークスペースが Git によるソース管理の対象になるように設定します。

![image](https://qiita-image-store.s3.amazonaws.com/0/100746/1847468c-ecad-c5ea-23df-9ee3d0a6aab6.png)

ターミナルを開き、ディレクトリを Web アプリのディレクトリに変更します。次のコマンドを入力します。
`git config core.autocrlf false`
このコマンドは、末尾に CRLF と LF が含まれているテキストに関する問題を防ぎます。

VSCodeで、コミットメッセージを追加し、[すべてコミット] チェックアイコンをクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/100746/60454d12-7a07-f208-0a3a-f0b7834c570e.png)

(".git" で終わる) Git URL を使用して、Web アプリに更新をプッシュするためのリモート参照を作成
`git remote add azure [URL for remote repository]`

資格情報をローカルに保存するようにGitを構成して、VSCodeから生成されるpushコマンドに資格情報が自動的に追加されるようにする
`git config credential.helper store`

次のコマンドを入力して、変更内容を Azure にプッシュする。
`git push -u azure master`

このAzureへの初回のpushを実行した後、VSCodeからすべてのpushコマンドを実行できる。

# Azure でのアプリの実行
ブラウザを開いて http://[アプリ名].azurewebsites.net にアクセスする
Hello World!と表示されていればAzureでの実行は成功です。

# 参考
https://codezine.jp/article/detail/8859
https://azure.microsoft.com/ja-jp/documentation/articles/web-sites-create-web-app-using-vscode/