Microsoft developer platform更新:Aspire.Hosting.NodeJs非推奨化の変更点と移行確認

2026年5月5日に公開または更新されたMicrosoft developer platformのドキュメント更新「Deprecate Aspire.Hosting.NodeJs in CLI integration listings」で、まず確認すべき結論はシンプルです。Aspire CLIでJavaScript/Node.js系の統合を追加する場合、今後はAspire.Hosting.NodeJsではなくAspire.Hosting.JavaScriptを使うべきです。

この変更は、Node.jsそのものが使えなくなるという話ではありません。Aspire.Hosting.NodeJsという古いNuGetパッケージ名がCLIの統合候補から外され、Aspire 13以降のJavaScript/TypeScriptアプリではAspire.Hosting.JavaScriptを使う流れに整理された、という位置づけです。PRでは、Aspire.Hosting.NodeJsを非推奨パッケージのフィルターに追加し、aspire addの結果に表示されないようにする変更が説明されています。(GitHub)

目次

Microsoft developer platformの更新で何が変わったか

今回のMicrosoft developer platformに関する更新では、Aspire CLIの統合パッケージ一覧におけるAspire.Hosting.NodeJsの扱いが変わりました。

公式のAspireドキュメントでは、Aspire 13.0でAspire.Hosting.NodeJsAspire.Hosting.JavaScriptへリネームされたと説明されています。新規および既存のAspire 13以降のアプリケーションでは、Aspire.Hosting.JavaScriptを使うことが推奨されています。(Aspire)

確認項目変更前の見方変更後の見方
CLIで追加するパッケージAspire.Hosting.NodeJsを見つけて追加する可能性があったAspire.Hosting.JavaScriptを選ぶ
aspire addの候補古いNodeJsパッケージが候補に出る可能性があった非推奨フィルターにより通常の候補から外れる
Node.jsアプリの実行Node.js向けの統合として理解されやすかったJavaScript/TypeScript全体を扱う統合として整理される
既存プロジェクト古いパッケージ参照が残っている可能性がある参照・手順・CI設定を確認する

重要なのは、非推奨になったのはNode.jsランタイムではなく、Aspire.Hosting.NodeJsというパッケージ名だという点です。AspireのJavaScript統合は、Node.jsランタイム、npm、yarn、pnpm、bun、Viteなどを含むJavaScript/TypeScriptアプリのオーケストレーションを扱うものとして説明されています。(Aspire)

Aspire.Hosting.NodeJsはなぜAspire.Hosting.JavaScriptへ置き換わるのか

Aspire.Hosting.NodeJsという名前は、対象がNode.jsだけに見えやすい名称です。しかし、現在のAspireではJavaScript/TypeScriptアプリケーション全体を扱う方向に整理されています。

たとえば、フロントエンドがVite、APIがExpress、パッケージ管理がpnpmという構成でも、開発者が意識する対象は「Node.js単体」ではなく「JavaScript/TypeScriptアプリ」です。そのため、Aspire.Hosting.JavaScriptという名前のほうが実態に合っています。

Aspire 13.0では、JavaScriptとPythonが「first-class citizens」として扱われ、Aspireは.NET中心のオーケストレーションツールからマルチランゲージなアプリケーションプラットフォームへ位置づけが広がっています。(Aspire)

影響を受ける人と受けにくい人

今回のMicrosoft developer platform documentation updateは、すべての開発者に即時対応を求めるものではありません。ただし、Aspire CLIやNuGetパッケージ参照を使っているチームは確認しておくべきです。

対象影響度確認すべきこと
Aspire CLIでJavaScript統合を追加している人aspire add javascriptを使う手順になっているか
Aspire.Hosting.NodeJsを既存AppHostで参照しているプロジェクトAspire.Hosting.JavaScriptへ置き換える計画が必要
チーム内ドキュメントやREADMEに旧パッケージ名を書いているチーム手順が古いまま残っていないか
CI/CDでNuGetパッケージ名を固定しているチームDirectory.Packages.props.csprojを確認する
Node.jsアプリを単体で運用しておりAspireを使っていない人直接の影響は小さい
Community ToolkitのNode.js拡張を使っている人本体パッケージとの役割を混同していないか

特に注意したいのは、CLIの候補に出なくなったからといって、既存コードが自動的に書き換わるわけではないことです。.csprojDirectory.Packages.props、AppHostのファイル、社内手順書、テンプレートリポジトリを別々に確認する必要があります。

新規追加ではaspire add javascriptを使う

新しくAspireのAppHostにJavaScript/TypeScriptアプリを追加する場合は、Aspire.Hosting.JavaScriptを前提にします。公式ドキュメントでは、Aspire CLIで次のコマンドを使う例が示されています。(Aspire)

aspire add javascript

CLIの対話画面では、次のようにAspire.Hosting.JavaScriptが選択対象として表示されます。

Select an integration to add:

> javascript (Aspire.Hosting.JavaScript)

.csprojに直接追加する場合は、AppHostプロジェクト側で次のようなPackageReferenceを確認します。

<PackageReference Include="Aspire.Hosting.JavaScript" Version="*" />

C#のfile-based app形式では、次のようなパッケージ指定が使われます。

#:package Aspire.Hosting.JavaScript@*

実務ではVersion="*"のままにするか、チームの運用に合わせて明示的なバージョン管理にするかを決めてください。本番運用やCIで再現性を重視する場合は、Central Package Managementを使い、Directory.Packages.propsでバージョンを管理するほうが安全です。

既存プロジェクトで確認するべき場所

既存プロジェクトでは、まず旧パッケージ名が残っていないかを確認します。単にAppHostの.csprojだけを見るのではなく、リポジトリ全体を検索するのが確実です。

Windows PowerShellで検索する

Select-String -Path .\* -Pattern "Aspire.Hosting.NodeJs" -Recurse

macOS/Linux/Git Bashで検索する

grep -R "Aspire.Hosting.NodeJs" .

確認対象は主に次のファイルです。

確認場所見るべき内容
AppHostの.csprojPackageReference Include="Aspire.Hosting.NodeJs"が残っていないか
Directory.Packages.propsPackageVersion Include="Aspire.Hosting.NodeJs"が残っていないか
AppHost.csやfile-based app#:package Aspire.Hosting.NodeJs@...が残っていないか
README・セットアップ手順aspire addの説明が古くないか
CI/CD設定dotnet add package Aspire.Hosting.NodeJsなどの固定手順がないか
テンプレートリポジトリ新規作成時に旧パッケージを入れていないか

検索結果が出た場合は、原則としてAspire.Hosting.JavaScriptへの置き換えを検討します。

移行の基本手順

移行は大きく分けて、パッケージ参照の置き換え、ビルド確認、アプリ起動確認の3段階で進めます。

手順作業内容失敗しやすいポイント
1旧パッケージ参照を検索する.csprojだけ見てREADMEやCPMを見落とす
2Aspire.Hosting.JavaScriptへ置き換えるバージョン管理方式を統一しない
3dotnet restoreを実行するNuGetキャッシュやロックファイルの差分を確認しない
4AppHostをビルドするusingや拡張メソッドの差分をビルドエラーで確認しない
5aspire runなどで起動確認するフロントエンドのdev scriptやポート設定を見落とす
6チーム手順書を更新するコードだけ直してオンボーディング手順が古いまま残る

たとえば、AppHostプロジェクトで旧パッケージを直接参照している場合は、次のような流れで確認できます。

dotnet remove package Aspire.Hosting.NodeJs
dotnet add package Aspire.Hosting.JavaScript
dotnet restore
dotnet build

Central Package Managementを使っている場合は、コマンドだけで完結しないことがあります。Directory.Packages.propsの該当行を手で確認してください。

<!-- 旧 -->
<PackageVersion Include="Aspire.Hosting.NodeJs" Version="..." />

<!-- 新 -->
<PackageVersion Include="Aspire.Hosting.JavaScript" Version="..." />

バージョン番号は、プロジェクトで使っているAspire本体や他のAspire関連パッケージとそろえるのが基本です。複数のAspireパッケージだけバージョンがばらつくと、復元やビルドで原因の分かりにくいエラーにつながります。

AddJavaScriptAppAddNodeAppAddViteAppの使い分け

Aspire.Hosting.JavaScriptは、単にパッケージ名が変わっただけでなく、JavaScript/TypeScriptアプリを用途に応じて扱いやすくする統合として説明されています。公式ドキュメントでは、JavaScriptAppResourceNodeAppResourceViteAppResourceなどのリソース種別が紹介されています。(Aspire)

使い分けの考え方は次のとおりです。

用途選び方の目安
一般的なJavaScriptアプリをAppHostに追加したいAddJavaScriptAppを中心に考える
特定のJavaScriptファイルをNode.jsで実行したいAddNodeAppが合う可能性がある
Viteベースのフロントエンドを扱いたいAddViteAppが合う可能性がある
yarnやpnpmの専用拡張を使いたいCommunity ToolkitのNode.js extensionsも確認する

ここで大事なのは、パッケージ名はJavaScriptでも、Node.jsアプリが対象外になったわけではないという点です。Node.jsランタイムを含むJavaScript/TypeScriptアプリの扱いが、より広い名称に整理されたと理解すると誤解しにくくなります。

Community ToolkitのNode.js extensionsと混同しない

今回の変更で混同しやすいのが、CommunityToolkit.Aspire.Hosting.NodeJS.Extensionsです。

公式ドキュメントでは、このCommunity ToolkitのNode.js hosting extensionsは、Aspire.Hosting.JavaScriptに追加機能を提供するパッケージとして説明されています。たとえば、Viteアプリの実行、Yarnやpnpmを使ったNode.jsアプリの実行、パッケージインストールの確認などが挙げられています。(Aspire)

つまり、次のように整理できます。

パッケージ役割
Aspire.Hosting.JavaScriptAspire 13以降で基本となるJavaScript/TypeScript hosting integration
Aspire.Hosting.NodeJs旧名称。新規・既存のAspire 13以降では置き換え対象
CommunityToolkit.Aspire.Hosting.NodeJS.ExtensionsJavaScript統合に追加機能を足すCommunity Toolkitの拡張

「NodeJS」という文字列が含まれるからすべて非推奨、という判断は危険です。今回の対象は、主にAspire.Hosting.NodeJsという旧パッケージ名です。Community Toolkitの拡張を使っている場合は、そのドキュメントに沿って役割を確認してください。

CLIで旧パッケージが出ない場合の見方

aspire addAspire.Hosting.NodeJsが見つからない場合、それは異常ではありません。今回の更新では、旧パッケージを非推奨パッケージのフィルターに追加し、CLIの統合候補に表示されないようにする変更が行われています。(GitHub)

そのため、次のような判断をしてください。

状況判断
aspire addAspire.Hosting.NodeJsが出ない正常。aspire add javascriptを使う
社内手順書にAspire.Hosting.NodeJsが書かれている手順書を更新する
既存プロジェクトで旧パッケージが復元されているすぐ壊れるとは限らないが、置き換え計画を立てる
新旧パッケージが両方入っている依存関係が分かりにくくなるため整理する
古いCLIでは旧候補が出るCLI更新後の挙動を確認する

Aspire 13.2のアップグレード手順では、CLIの更新にaspire update --self、AppHost側の更新にaspire updateを使う流れが紹介されています。ただしaspire updateはプレビュー扱いとされているため、実行前に差分確認しやすい状態で作業するのが安全です。(Aspire)

チームで対応する場合の実務チェックリスト

個人開発ならパッケージ名を置き換えてビルド確認すれば十分なこともあります。一方、チーム開発では「誰かのローカルでは動くが、新規参加者やCIで失敗する」パターンが起きやすいため、確認範囲を広げるべきです。

コードと依存関係の確認

まず、リポジトリ内の参照を確認します。

grep -R "Aspire.Hosting.NodeJs" .
grep -R "aspire add" .
grep -R "nodejs" .

Windows中心のチームなら、PowerShellで同様に検索できます。

Select-String -Path .\* -Pattern "Aspire.Hosting.NodeJs","aspire add","nodejs" -Recurse

検索対象には、ソースコードだけでなく次のファイルも含めてください。

  • README.md
  • docs/配下の開発手順
  • .github/workflows/などのCI設定
  • Directory.Packages.props
  • global.json
  • DockerfileやDev Container設定
  • 社内テンプレートの作成スクリプト

CIで確認するコマンド

移行後は、最低限次の流れで確認します。

dotnet restore
dotnet build

Aspire AppHostを起動できる環境なら、次も確認します。

aspire run

JavaScript/TypeScript側では、package.jsonのscriptも確認してください。Aspire側のパッケージ名を直しても、フロントエンド側のdevbuildが壊れているとAppHost起動時に失敗します。

{
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  }
}

AddJavaScriptAppでは、package.jsonがある場合にnpmを使い、ローカル開発ではdev、公開時にはbuildスクリプトを使う動きが説明されています。(Aspire)

失敗しやすいポイント

今回の更新は見た目より小さな変更に見えますが、実務ではいくつか落とし穴があります。

Node.js自体が非推奨になったと誤解する

もっとも多い誤解は、「Node.jsがAspireで非推奨になった」と受け取ってしまうことです。

実際には、Aspire.Hosting.NodeJsという旧パッケージ名が非推奨扱いになり、Aspire.Hosting.JavaScriptへ移る話です。JavaScript/TypeScriptアプリやNode.jsランタイムの利用をやめる必要がある、という意味ではありません。

CLI候補だけ見て既存参照を放置する

aspire addの候補から旧パッケージが消えても、既存プロジェクトのPackageReferenceが自動的に消えるとは限りません。

特に、次のような状態は後から混乱を招きます。

<PackageReference Include="Aspire.Hosting.NodeJs" Version="..." />
<PackageReference Include="Aspire.Hosting.JavaScript" Version="..." />

新旧パッケージが両方ある場合は、なぜ両方必要なのかを確認し、不要な参照を整理してください。

チームのオンボーディング手順が古いまま残る

新しいメンバーがREADMEを見てAspire.Hosting.NodeJsを追加しようとしても、CLIの候補に出ず、そこで詰まる可能性があります。

コード修正だけでなく、次のような説明も更新しておきましょう。

古い手順:
aspire add nodejs

新しい手順:
aspire add javascript

実際のCLIコマンド名や候補名はバージョンによって変わる可能性があるため、社内手順では「Aspire.Hosting.JavaScriptを選択する」と明記しておくと安全です。

Community Toolkitの拡張まで消してしまう

NodeJSという文字列だけを見て、CommunityToolkit.Aspire.Hosting.NodeJS.Extensionsまで削除してしまうのも危険です。

Community ToolkitのNode.js extensionsは、Aspire.Hosting.JavaScriptに追加機能を提供する別のパッケージです。Yarn、pnpm、Vite関連の拡張を使っている場合は、削除前に実際の利用箇所を確認してください。(Aspire)

移行判断の目安

すぐに置き換えるべきか、次のリリースサイクルで対応すべきかは、プロジェクトの状況で判断できます。

プロジェクト状況推奨対応
新規にAspire 13以降で作る最初からAspire.Hosting.JavaScriptを使う
既存でAspire.Hosting.NodeJsを使っているが動作は安定している次の依存関係更新タイミングで置き換える
CLI手順やテンプレートを社内配布している早めに更新する
CIでdotnet add package Aspire.Hosting.NodeJsしている優先して修正する
Vite、pnpm、Yarnの拡張を使っているCommunity Toolkitとの関係を確認してから修正する
Aspireのメジャーバージョン更新も同時に行う変更点が増えるため、パッケージ置換とバージョン更新を分けて検証する

迷った場合は、まず検索だけ実施してください。Aspire.Hosting.NodeJsがリポジトリ内に存在しなければ、今回の変更による直接対応はほぼ不要です。存在する場合は、置き換え対象を一覧化し、ビルドと起動確認まで進めるのが現実的です。

管理者・リードエンジニアが見るべき観点

チームや組織でMicrosoft developer platformを利用している場合、単なるパッケージ名変更として片付けず、開発者体験の観点で確認すると効果的です。

特に見るべきポイントは次の3つです。

1つ目は、開発環境の再現性です。
新規メンバーが手順どおりにaspire addしても旧パッケージが出ないなら、オンボーディングの最初でつまずきます。READMEやセットアップスクリプトを更新してください。

2つ目は、依存関係の一貫性です。
Aspire関連パッケージのバージョンが混在していると、ビルドや復元の失敗原因を追いにくくなります。AppHost側のAspireパッケージ群は、できるだけ同じ更新サイクルで管理するのがおすすめです。

3つ目は、名称変更の意図をチームに共有することです。
NodeJsからJavaScriptへの変更は、単なる表記変更ではなく、AspireがJavaScript/TypeScriptアプリ全体を扱う方向に整理されたことを示しています。フロントエンド、API、BFF、ワーカープロセスなどをAppHostでまとめて扱うチームほど、この理解が重要になります。

今回の更新で取るべき次の行動

今回のMicrosoft developer platform documentation updateでは、Aspire.Hosting.NodeJsがCLIの統合候補から外れ、置き換え先としてAspire.Hosting.JavaScriptを使う方針が明確になりました。

対応は次の順で進めると安全です。

  1. リポジトリ全体でAspire.Hosting.NodeJsを検索する
  2. 見つかった場合はAspire.Hosting.JavaScriptへ置き換える
  3. .csprojDirectory.Packages.props、AppHost、README、CI設定を確認する
  4. dotnet restoredotnet build、必要に応じてaspire runで検証する
  5. 新規追加手順をaspire add javascriptベースに更新する

この変更は、急にNode.jsアプリが使えなくなるような更新ではありません。ただし、旧パッケージ名を前提にした手順やテンプレートは、今後のAspire CLIの利用でつまずきやすくなります。新規プロジェクトではAspire.Hosting.JavaScriptを標準にし、既存プロジェクトでは依存関係更新のタイミングで計画的に置き換えるのが現実的です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次