Visual Studio Codeを使ってAzure Functionsをデバッグ実行するまで(C#)

azure-functions-core-toolsのインストールコマンド

brew tap azure/functions 
brew install azure-functions-core-tools@4 
# 既に2.x または 3.x がインストールされているマシンでアップグレードする場合。
brew link --overwrite azure-functions-core-tools@4

プロジェクトを作成する

# 任意の場所でworkingディレクトリを作成しておく
cd /Users/takumi/Documents/azure-functions
mkdir firstSample

# プロジェクトを作成
func init --worker-runtime dotnet

visual studio codeで開くと以下が出てくるのでYes押す

Httpトリガーの関数を作成する

func new --name HttpHelloWorld --language c# --template httptrigger
zsh: no matches found: c#

エラーがでました。ざっくり原因は、zshでは#が特別な意味を持っているためとのこと。
こちらに書いてました。

回避策として、c#をシングルクォートで囲みます。

func new --name HttpHelloWorld --language 'c#' --template httptrigger

うまくいきました.

動作確認

ソースコードを見ていると、アセンブリー参照がないとエラーが出ていましたが、func start実行すると依存関係を復元してくれエラーが消えました。

以下にアクセス

http://localhost:7071/api/HttpHelloWorld

ソースを読めばわかりますが、クエリーストリングかbody部にname属性を与えれば違う結果が返ってくるようです。

http://localhost:7071/api/HttpHelloWorld?name=”test”

アセンブリー参照の解決方法

以下のような警告が出ています。

以下実行して参照を追加することができます。

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage

デバッグする

HttpHelloWorld.csでF5を押すとブレークポイントで止まりました。

念の為launch.jsonを載せておく。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Attach to .NET Functions",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:azureFunctions.pickProcess}"
        }
    ]
}