Visual Studio 用の Azure Functions拡張機能(Preview)

昨日、まだ出ないだろうと思ってとりあえずな記事書いたところで、
正式なFunctionsの拡張機能が出たようです。

https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/

 

注意点として

  • プレビューであること
  • Visual Studio 2015 Update 3用であること
  • Azure 2.9.6 .NET SDKがインストールされていること

プロジェクトテンプレート

FunctionApp1という名前で作ってみたところ、以下のようなファイルが

Properties
appsettings.json
FunctionApp1.funproj
host.json
Project_Readme.html

これだけだと、ファンクションそのものがないからの状態なんですが、
デバッグ開始(F5)してみると
Azure-Functions-Cliをダウンロードしてくるぞ?と聞かれました。
いいよとすると、コマンドプロンプトのように、ローカルホスト用であるfunc.exeが起動

Listening on http://localhost:7071/
Hit CTRL-C to exit...
Reading host configuration file 'c:\Projects\FunctionApp1\FunctionApp1\host.json'
Generating 0 job function(s)
Starting Host (HostId=sb-v2-functionapp1, Version=1.0.0.0, ProcessId=9404, Debug=False)
No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
Job host started
File change of type 'Created' detected for 'c:\Projects\FunctionApp1\FunctionApp1\data'
Host configuration has changed. Signaling restart.
Stopping Host
Job host stopped
Reading host configuration file 'c:\Projects\FunctionApp1\FunctionApp1\host.json'
Generating 0 job function(s)
Starting Host (HostId=sb-v2-functionapp1, Version=1.0.0.0, ProcessId=9404, Debug=True)
No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
Job host started
Debugger listening on [::]:5858

特に何もファンクションがないので、Jobは0となってます。

Functionsを追加

Blogに書かれているように
ソリューションエクスプローラー>プロジェクト>コンテキストメニュー>追加>New Azure Function

とすると、テンプレートがずらずらーっと並んでるので追加。
再びデバッグ開始で、

Listening on http://localhost:7071/
Hit CTRL-C to exit...
Reading host configuration file 'c:\Projects\FunctionApp1\FunctionApp1\host.json'
Generating 1 job function(s)
Starting Host (HostId=sb-v2-functionapp1, Version=1.0.0.0, ProcessId=7960, Debug=True)
Found the following functions:
Host.Functions.HttpTriggerCSharp

Job host started
Http Function HttpTriggerCSharp: http://localhost:7071/api/HttpTriggerCSharp

というわけで、ブレークポイントを設定してブラウザから
http://localhost:7071/api/HttpTriggerCSharp
にアクセスしてみると・・・

2016-12-02-1

おおー、変数展開、呼び出し履歴、タスク、診断ツール
と普通にいけてるじゃないですか!!
ローカル環境での実行なので、AzureFunctionsをデプロイしてなくてもいいし。
極端な話、ネットワークにつながってなくても書ける・・・かもしれない?

デプロイ

Blogに書かれているように
ソリューションエクスプローラー>プロジェクト>公開

AppServiceとしてを選ぶと、既存のFunctionsAppのみアイコン付きで出てきました。

2016-12-02-2

そのまま、AppServiceの感覚でデプロイ。

ここからは、せっかく書いた昨日の記事が生きてくるかもしれません。