.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 に変更します。
後はリビルドを実行するとパッケージの復元から走るので、ビルドに成功するはずです。手元の環境ではリビルドを実行しないと、古いファイルが残っていて失敗することが多かったです。
これで netcoreapp2.1 が使えるようになっていろいろ捗りそうですが、今はそのままの状態だと Visual Studio からデバッグ実行が出来ないので、デバッグ周りの設定を変更をして対処します。
デバッグ時の起動対象を実行可能ファイルに変更して、Azure Functions Tools を直接使うように設定します。
パスは現時点では %localappdata%\AzureFunctionsTools\Releases\2.8.1\cli\func.exe
を指定すれば良いですが、バージョンが上がった時には追従させた方が良いでしょう。
設定が終われば、F5 でデバッグ実行出来るようになります。この不具合は今後修正されるはずです。
作成した Function は Azure にデプロイしても、何の問題もなく動作します。
netstandard2.0 から netcoreapp2.1 に変更することで、デプロイに必要となるファイル数が減るので zip 後のサイズもかなり減りました。パフォーマンス面でのメリットもありそうです。
正式にテンプレートレベルで netcoreapp2.1 に対応されたら、既存の移行が捗りそうな気配があります。