🐕
Azure Functions (in-process) を .NET8 化したときにFunctionホストが起動しない
古くから保守されている Azure Functions をバージョンアップするとき、in-process モデルのまま .NET8 化、Function v4 化をすることが多いと思います。
どこかのバージョンから、local.setting.json に設定を追記する必要が出てきて、それに気づかずに路頭に迷ったことがあったので、メモとして残しておきます。
なお、おそらく本記事のエラーはカスタムstartupを組んでいる場合に発生するものです。
(大体そこそこ大きなプロジェクトのfunctionsだとカスタムしていることが多いと思います。)
発生するエラー
ざっくりこのようなエラーが発生しました。
Error configuring services in an external startup class
Could not load file or assembly 'Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxx'. 指定されたファイルが見つかりません。.
解決方法
local.settings.json
の Values
に次のようにプロパティを追加します。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "xxxxxxxxxxxxxxxxxxxxxxxx",
"Cron:Timer_HogehogeOperation": "0 */1 * * * *",
"AzureWebJobs.Timer_HogehogeOperation.Disabled": "0"
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"FUNCTIONS_INPROC_NET8_ENABLED": "1",
}
}
追加したのは以下の2つのプロパティです。
{
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"FUNCTIONS_INPROC_NET8_ENABLED": "1",
}
これを追加すればOKだと思います。MS の wiki にも書いてあるのでよく読んでね(気づかねえべ
もう一つ注意で、すぐ直る気もしますが、local.settings.json に//コメントが書けなくなりました。
もし記述してあったら消しましょう。
おまけ
以下に適当にマスクしたログを張り付けておきます。
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
Azure Functions Core Tools
Core Tools Version: 4.0.6518 Commit hash: N/A +xxxxxxxxxxxxxxxxxxxxxxxxxxx (64-bit)
Function Runtime Version: 4.35.4.23179
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
Can't determine project language from files. Please use one of [--dotnet-isolated, --dotnet, --javascript, --typescript, --java, --python, --powershell, --custom]
[2024-11-06T05:45:31.922Z] Error configuring services in an external startup class.
[2024-11-06T05:45:31.923Z] Error configuring services in an external startup class. XXXXX.NAMESPACE.XXXXX: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxx'. 指定されたファイルが見つかりません。.
[2024-11-06T05:45:31.979Z] A host error has occurred during startup operation 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.
[2024-11-06T05:45:31.980Z] Microsoft.Azure.WebJobs.Script: Error configuring services in an external startup class. XXXXX.NAMESPACE.XXXXX: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxx'. 指定されたファイルが見つかりません。.
Value cannot be null. (Parameter 'provider')
Press any key to continue....
Discussion