ChatGPT さんにいろいろと聞いていたときに添付していたスクリーンショットのFunctions Worker が.NET 8 になっているのを見つけてo3さんが解説をしてくれました。
びっくり。
ChatGPT さんって先回りしていろいろと情報の追加や提案とかしてくれますよね。
ChatGPT-4o は特にそういう傾向があったのですが先日のロークバックのタイミングでなんか
急にツンになってしまった…(個人の印象です)
最近はo3さんの方が丁寧な感じ(個人の印象です)
.NET Aspire Azure Functions の統合 (プレビュー) – .NET Aspire | Microsoft Learn024/12/16
https://learn.microsoft.com/ja-jp/dotnet/aspire/serverless/functions?tabs=dotnet-cli&pivots=visual-studio
- .NET 8.0 以降をターゲットにする必要があります。
- .NET 9 SDK を使用する必要があります。

o3 さんまとめ
.NET 8 LTS でビルドできるのに .NET 9 SDK が必要なわけ
現在プレビュー中の Aspire + Functions 連携 NuGet(Aspire.Hosting.Azure.Functions
など)は 9.x 系パッケージとして提供されています。
そのため 開発マシン側の SDK は 9.0 Preview が必須ですが、プロジェクトの TargetFramework
は net8.0
(LTS)で問題ありません。
Azure Functions integration (Preview)」
Azure Functions × .NET Aspire 統合
.NET Aspire オーケストレーションへの参加(プレビュー)


若干メニューの表記(文言)に差違がある感じですが、o3さんはドキュメントベースで照査しているからと思われます。スクリーンショットも添付して会話すれば正確になるかと思われます。
Add → .NET Aspire Orchestrator Support
実際は
Add → .NET Orchestrator Support
ざっくりまとめ
- チェックボックス … 新規 Azure Functions プロジェクトを作る瞬間に AppHost/ServiceDefaults を一緒に生成し、
AddAzureFunctionsProject()
を自動で書き込む。 - [Add > .NET Aspire Orchestrator Support…] … 既存プロジェクト(Functions 以外も可)に 後付け でまったく同じ構成を作成。
→ 出来上がるソリューション構造と実行体験は等価 なので、「最初に入れ忘れても後から追加すれば OK」という理解で合っています。 (.NET Aspire and Azure Functions integration preview – Visual Studio Blog, docs-aspire/docs/get-started/add-aspire-existing-app.md at main)
.NET 8 isolated で動くのに “.NET 9 が必要” と言われる理由
項目 | 実際の要件 | なぜそうなっているか |
---|---|---|
実行ターゲット | net8.0 以上 (isolated worker) | Functions ランタイム v4 が .NET 8 LTS を正式サポート |
使用 SDK | .NET 9 SDK (Preview) が必須 | .NET Aspire 9.x テンプレート & NuGet が 9 系 SDK を前提にビルドされているため |
テンプレート UI | VS が .NET 8 isolated (長期的なサポート) を選択肢に表示 | ターゲットフレームワークと SDK バージョンは切り離されている |
つまり
- プロジェクトの
TargetFramework
はnet8.0
のままで OK- ただし 開発マシン には 9 系 SDK(
9.0.x
preview)をインストールしておく必要がある
この二段構えの要件は、Learn の「Azure Functions integration (Preview)」ドキュメントにも明記されています。 (.NET Aspire Azure Functions integration (Preview) – .NET Aspire | Microsoft Learn)
文章サンプル(ブログや社内資料用)
Azure Functions を .NET Aspire に組み込む 2 つの方法
Visual Studio 2022 17.14 Preview 以降 では、新規 Functions プロジェクトのウィザードに
「.NET Aspire オーケストレーションへの参加 (プレビュー)」チェックが追加されました。
チェックを入れて作成すると、ソリューションに AppHost と ServiceDefaults プロジェクトが同時に生成され、AddAzureFunctionsProject()
が自動で登録されます。✅ ポイント
- AppHost によりローカルでコンテナ起動・ログ収集が一括管理できる
- Aspire ダッシュボードが F5 で自動起動
- 生成されるコードは後から自由に編集可能
もしチェックを入れ忘れても、[Add → .NET Aspire Orchestrator Support] を実行すれば同じ状態に後付けできます。
既存の Web API や Worker Service に対しても同じ手順で Aspire 化できるため、
“まず動くコードを書いてから一括でオーケストレーションに参加させる” というワークフローも容易です。.NET 8 LTS でビルドできるのに .NET 9 SDK が必要なわけ
現在プレビュー中の Aspire + Functions 連携 NuGet(
Aspire.Hosting.Azure.Functions
など)は 9.x 系パッケージとして提供されています。
そのため 開発マシン側の SDK は 9.0 Preview が必須ですが、プロジェクトのTargetFramework
はnet8.0
(LTS)で問題ありません。
“ランタイムは 8、ツールチェーンは 9” という構成になる点だけ注意してください。
追加 Tips
- CLI でテンプレートが見つからない場合は
dotnet new install Aspire.ProjectTemplates::9.0.*
の後、dotnet new azure-functions -lang C# --use-aspire
でも新規作成できます。 - AppHost だけを削除したい場合は Solution から .AppHost と .ServiceDefaults を外し、各
.csproj
からEnlistInAspireOrchestration
で追加された Item を手動で除去します。
これで 「最初から参加」vs「あとから参加」問題 と .NET 8/9 の要件 両方の背景が説明できるはずです。
おおむねご認識のとおりです。ただ、 「Preview」表記の有無=サポート状態 というわけではなく、Visual Studio の UI とドキュメントで “見せ方” が少し異なっているだけ、というのが実情です。ポイントを 3 つに整理します。
項目 | 実際の状態 | UI 上の表記 |
---|---|---|
Azure Functions × .NET Aspire 統合 | まだ正式リリース前の プレビュー機能 | ドキュメント・クラス名・テンプレート名に “(Preview)” と明記 ([.NET Aspire Azure Functions integration (Preview) – .NET Aspire |
Add > .NET Aspire Orchestrator Support…(右クリックメニュー) | Aspire 全体をプロジェクトに後付けで組み込む汎用ツール※ Aspire 自体は GA 前だが、この VS 機能は 17.10 以降 “常設” になった | メニュー文字列に (Preview) は付いていない ([.NET Aspire tooling – .NET Aspire |
新規 Functions テンプレートのチェックボックス「.NET Aspire オーケストレーションへの参加 (プレビュー)」 | 実装内容は上段と同じ プレビュー統合 を自動生成 | ウィザード項目に (プレビュー) と明示 (.NET Aspire and Azure Functions integration preview – Visual Studio Blog) |
どうして表記ゆれが起きるのか?
- 機能レイヤーの違い
- Azure Functions integration は 新規 API (AddAzureFunctionsProject) + ホスティングパッケージ がまだ試験段階 → 明示的に “Preview”。
- Orchestrator Support ダイアログ自体は AppHost/ServiceDefaults を生成するだけ の汎用ツールで、ASP.NET Core/WebAPI/Worker など既存ワークロードでも多数利用されているため、Visual Studio チームは「常用ツール」と位置づけ、ラベルを外している。
- UI ノイズを減らすため
VS ではプレビュー機能に “(Preview)” を付ける運用ですが、メニューが長くなりすぎる・既定テンプレートで毎回目に入る――といった UX 上の理由で、既存ラベルを段階的に削ぎ落している ケースがあります。ドキュメントには引き続きプレビュー注意が記載されているので、正確な状態は文書で確認するのが安全です。 (.NET Aspire and Azure Functions integration preview – Visual Studio …)
まとめ文(補足説明用)
Visual Studio の [Add → .NET Aspire Orchestrator Support] は汎用ツールとして常設化されたため UI に “Preview” 表記がありません。一方、Azure Functions を AppHost に組み込む 専用統合 API / テンプレート は現在もプレビュー段階にあるため、ドキュメントや新規プロジェクト ウィザードでは (プレビュー) と明記されています。機能自体の安定度は今後の GA アナウンスで確定する見込みですので、API 変更に備えて NuGet を
*-preview
フィードで追従しておくことをおすすめします。
この整理で疑問点が解消すれば幸いです。
今回のポイント ――
- Orchestrator Support ダイアログ自体は既に一般公開(GA)済み
- Functions 統合 API/テンプレートは Preview 継続中
- UI 表記の違いは “機能レイヤー” + “UX の簡素化” によるもの
―― をご理解いただけたようで安心しました。
今後も .NET Aspire 周辺は SDK の更新ピッチが速いので、NuGet の preview フィードと Visual Studio Preview チャネルを追いかけておくと最新機能を試しやすいと思います。ほかにも疑問や検証したいポイントがありましたら、いつでもお声がけください。引き続きよろしくお願いいたします!
コメントを残す