Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • コンピューティング (dyno)
      • dyno の管理
      • dyno の概念
      • dyno の動作
      • dyno の参照資料
      • dyno のトラブルシューティング
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • 開発者ツール
    • コマンドライン
    • Heroku の VS Code 拡張機能
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Node.js アプリのトラブルシューティング
      • Heroku での Node.js の動作
      • Node.js の操作
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Ruby の操作
      • Heroku での Ruby の動作
      • Ruby アプリのトラブルシューティング
    • Python
      • Python の操作
      • Python でのバックグラウンドジョブ
      • Heroku での Python の動作
      • Django の使用
    • Java
      • Heroku での Java の動作
      • Java の操作
      • Maven の使用
      • Spring Boot の使用
      • Java アプリのトラブルシューティング
    • PHP
      • PHP の操作
      • Heroku での PHP の動作
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Heroku Postgres への移行
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Vector Database
    • Working with AI
    • Heroku Inference
      • AI Models
      • Inference Essentials
      • Heroku Inference Quick Start Guides
      • Inference API
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • 言語サポート
  • .NET
  • Heroku での .NET の動作

Heroku での .NET の動作

日本語 — Switch to English

最終更新日 2025年04月17日(木)

Table of Contents

  • 自動検出
  • ビルド動作
  • プロセスタイプの自動検出
  • 環境
  • カスタマーサポート
  • その他の資料

Heroku プラットフォームと .NET buildpack では、デプロイされたあらゆる種類の .NET アプリケーションに対して次の動作が行われます。詳細は、.NET buildpack​ を参照してください。

.NET アプリケーションのデプロイに関する詳細なガイダンスについては、「Heroku スターターガイド (.NET)​」 (クラシック) または「Heroku Fir スターターガイド (.NET)​」を参照してください。

自動検出

Heroku では、アプリのルートディレクトリに *.sln​、*.csproj​、*.vbproj​、*.fsproj​ のいずれかのファイルが含まれている場合、そのアプリを自動的に .NET アプリとして認識します。

Heroku で .NET アプリケーションが認識されると、次のビルド出力が表示されます。

クラシック buildpack​ を備えたアプリの場合:

$ git push heroku main
-----> .NET app detected

Cloud Native Buildpack​ を備えたアプリの場合:

## Heroku .NET Buildpack

ビルド動作

アプリのルートディレクトリには、ソリューション (*.sln​) とプロジェクトファイル (*.csproj​、*.vbproj​、*.fsproj​ のいずれか) の両方を含めることができます。buildpack は公開するファイルを次のルールに基づいて選択します。

  • ソリューションファイルはプロジェクトファイルよりも優先されます。
  • buildpack が複数のソリューションファイルを見つけた場合は、辞書の順序で並べた最初のファイルが使用されます。ルートディレクトリに含めるソリューションファイルは 1 つのみにすることをお勧めします。
  • buildpack が複数のプロジェクトファイルを検出すると、エラーを返します。

buildpack は選択したソリューションファイルまたはプロジェクトファイルをビルドし、dotnet publish​ コマンド​を使用して公開します。

ビルド設定

.NET buildpack​ は次のパラメータを追加します。

  • --runtime <rid>​: ターゲットプラットフォームに応じて、ランタイム識別子 (RID) を linux-amd64​ または linux-arm64​ に設定します。
  • -p:PublishDir=bin/publish​: ​PublishDir​ MSBuild プロパティを bin/publish​ に設定し、出力先がプロジェクトファイルに関連する一貫した場所になるようにします。
  • --artifacts-path <temporary-directory>​: アーティファクトパスを一時ディレクトリに設定します。これは、上述の PublishDir​ 設定と組み合わせた場合、公開済みの出力の実際のパスには影響を与えません。中間ビルドアーティファクトを除外して公開済みの出力を減らすようにのみ設定されています。

この設定により、あらゆるオペレーティングシステム、CPU アーキテクチャ、Release​ や Debug​ などのビルド設定、Target Framework Moniker (TFM) と互換性のある Procfile​ コマンドの書き込みが容易になります。

デフォルトのビルド設定である Release​、および MSBuild の詳細レベルである minimal​ は、環境変数の BUILD_CONFIGURATION​ や MSBUILD_VERBOSITY_LEVEL​ と共にカスタマイズできます。

クラシック buildpack

Heroku Dashboard​ または CLI を使用して環境変数を設定します。

heroku config:set BUILD_CONFIGURATION=Debug
heroku config:set MSBUILD_VERBOSITY_LEVEL=normal

Cloud Native buildpack

project.toml​ ファイル​に環境変数を設定します。

[_]
schema-version = "0.2"

[[io.buildpacks.build.env]]
name='BUILD_CONFIGURATION'
value='Debug'

[[io.buildpacks.build.env]]
name='MSBUILD_VERBOSITY_LEVEL'
value='normal'

NuGet 依存関係

dotnet publish​ プロセスは、プロジェクトファイルで定義された NuGet 依存関係を復元します。

Fir 世代のアプリの場合、buildpack は復元済みのパッケージをグローバルパッケージキャッシュにキャッシュし、NUGET_PACKAGES​ 環境変数がデフォルト以外の場所を指すように設定します。キャッシュの過度の増加を防ぐため、20 回使用するごとにキャッシュが消去されます。

.NET ツール

buildpack は .config/dotnet-tools.json​ で定義されたローカルの .NET ツール​を自動で復元し、それをビルド、公開、テスト (Heroku CI) の間に使用するように設定します。

プロセスタイプの自動検出

最初に、Heroku はプロセスタイプを指定する Procfile​ を検索します。

ビルドプロセス中にアプリのルートディレクトリに Procfile​ がない場合、Heroku は Microsoft.NET.Sdk.Web​ や Microsoft.NET.Sdk.Worker​ のような既知の「実行可能な」プロジェクト SDK を参照するプロジェクトのプロセスタイプを自動的に追加します。SDK スタイルのプロジェクトについての詳細は、.NET プロジェクト SDK に関するドキュメント​を参照してください。検出されたプロセスタイプの詳細はビルドログに書き込まれます。

プロセスの登録

buildpack は、サポートされているプロジェクト SDK を検出すると、以下を使用してプロセスタイプを登録します。

  • 名前 web​ (ソリューション内で単一の Web アプリケーションのみが検出された場合)
  • プロジェクト名または AssemblyName​ プロジェクトプロパティ の値
    • 名前は小文字に変換され、スペース、ドット (.​)、アンダースコア (_​) はハイフン (-​) に置き換えられて、その他の英数字以外の文字や特殊文字は削除されます。
  • コマンドとして実行可能な公開済みのファイルへのパス
    • Microsoft.NET.Sdk.Web​ および Microsoft.NET.Sdk.Razor​ の SDK を参照するプロジェクトなど、サポートされている Web アプリの場合は、--urls http://*:$PORT​ 引数がコマンドに付加されます。

アプリケーションのプロセスタイプを選択または上書きするには、Procfile​ を使用します。

サポートされているプロジェクト SDK

次のプロジェクト SDK は、プロセスタイプの自動登録をサポートしています。

  • OutputType​ プロパティ が Exe​ に設定されているプロジェクトの Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Worker
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Razor

環境

デフォルトの環境変数

.NET buildpack は次の環境変数のデフォルト値を設定します。

  • DOTNET_ROOT=<dotnet-runtime-path>​: .NET ランタイムの場所を指定します。
  • DOTNET_CLI_TELEMETRY_OPTOUT=true​: .NET ツールのテレメトリーを無効にします。
  • DOTNET_NOLOGO=true​: .NET のウェルカムメッセージをミュートします。
  • DOTNET_RUNNING_IN_CONTAINER=true​: 一部の ASP.NET Core ワークロードで使用される、コンテナ内で実行されている .NET の検出を有効にします。
  • DOTNET_EnableWriteXorExecute=0​: W^X サポートを無効にします。この環境変数は、エミュレートされた AMD64 Docker image を実行するときに ARM64 Mac でのエラーを防止します。

変更された環境変数

buildpack は次の環境変数も変更します。

  • PATH​: .NET ルートディレクトリが PATH​ に追加されるため、完全なパスを指定せずに dotnet​ などのコマンドを実行できるようになります。

プロセスタイプ固有の環境変数

  • PORT=<value>​: Heroku は web​ プロセスタイプに PORT​ 環境変数を設定します。この値を使用して、HTTP/Web アプリケーションのポートを設定します。

カスタマーサポート

Heroku サポートチャネル​のいずれかを通じて問題を報告できます。

その他の資料

  • Heroku スターターガイド (.NET)
  • Heroku Fir スターターガイド (.NET)
  • Heroku の .NET サポートリファレンス

関連カテゴリー

  • .NET

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices