しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Functions v2 で netcoreapp2.1 が使えるようになった

.NET Standard 2.0 で書く必要があった Azure Functions v2 ですが、最新版の SDK を使うと .NET Core 2.1 向けにビルド出来るようになりました。正確には netcoreapp2.1 をターゲットに設定出来ます。

先に SDK をリリースして、問題なければテンプレートも netcoreapp2.1 になりそうですね。

これでようやく Span<T> などの新しい API が使えるようになりそうです。流石に .NET Standard 2.0 はアプリのコードを書くには API が少なすぎました。

対応している SDK は 1.0.23 からです。このバージョンからは UseNETCoreGenerator の設定も不要になっているので、単純にターゲットを変更するだけでビルドが通るので楽です。

テンプレートから作ると netstandard2.0 になっているので、netcoreapp2.1 に変更します。

f:id:shiba-yan:20181012052357p:plain

後はリビルドを実行するとパッケージの復元から走るので、ビルドに成功するはずです。手元の環境ではリビルドを実行しないと、古いファイルが残っていて失敗することが多かったです。

これで netcoreapp2.1 が使えるようになっていろいろ捗りそうですが、今はそのままの状態だと Visual Studio からデバッグ実行が出来ないので、デバッグ周りの設定を変更をして対処します。

f:id:shiba-yan:20181012054526p:plain

デバッグ時の起動対象を実行可能ファイルに変更して、Azure Functions Tools を直接使うように設定します。

パスは現時点では %localappdata%\AzureFunctionsTools\Releases\2.8.1\cli\func.exe を指定すれば良いですが、バージョンが上がった時には追従させた方が良いでしょう。

f:id:shiba-yan:20181012055104p:plain

設定が終われば、F5 でデバッグ実行出来るようになります。この不具合は今後修正されるはずです。

作成した Function は Azure にデプロイしても、何の問題もなく動作します。

f:id:shiba-yan:20181012052313p:plain

netstandard2.0 から netcoreapp2.1 に変更することで、デプロイに必要となるファイル数が減るので zip 後のサイズもかなり減りました。パフォーマンス面でのメリットもありそうです。

正式にテンプレートレベルで netcoreapp2.1 に対応されたら、既存の移行が捗りそうな気配があります。