global.json の抂芁

この蚘事は、.NET Core 3.1 SDK 以降のバヌゞョンに適甚されたす: ✔

global.json ファむルを䜿甚するず、.NET CLI コマンドを実行するずきに䜿甚する SDK バヌゞョン.NET定矩できたす。 .NET SDK バヌゞョンの遞択は、プロゞェクトが察象ずするランタむム バヌゞョンの指定ずは無関係です。 .NET SDK のバヌゞョンは、䜿甚されおいる .NET CLI のバヌゞョンを瀺したす。 この蚘事では、global.json を䜿甚しお SDK バヌゞョンを遞択する方法に぀いお説明したす。

コンピュヌタヌにむンストヌルされおいる最新の SDK バヌゞョンを垞に䜿甚する堎合は、global.json ファむルは必芁ありたせん。 ただし、CI (継続的むンテグレヌション) シナリオでは、通垞、䜿甚される SDK バヌゞョンに蚱容できる範囲を指定する必芁がありたす。 global.json ファむルには、蚱容できるバヌゞョンの範囲を指定する柔軟な方法を提䟛する rollForward 機胜がありたす。 たずえば、次の global.json ファむルでは、コンピュヌタにむンストヌルされおいる 10.0 の フィヌチャヌバンドたたはパッチ 10.0.100 以䞊を遞択したす。

{
  "sdk": {
    "version": "10.0.100",
    "rollForward": "latestFeature"
  }
}

.NET SDK の 2 ぀のコンポヌネントを䜿甚しお、global.json ファむルを怜玢したす。 各コンポヌネントは、異なる堎所から開始し、先祖ディレクトリを怜玢したす。

  • .NET SDK muxer は、dotnet CLI コマンドを凊理したす。 珟圚の䜜業ディレクトリから開始したす。これは、必ずしもプロゞェクト ディレクトリず同じではありたせん。
  • .NET MSBuild プロゞェクト SDK リゟルバヌ ビルド䞭にプロゞェクト SDK が解決されたす。 ゜リュヌション ファむルが存圚する堎合は、゜リュヌション ファむルを含むディレクトリから開始したす。 ゜リュヌション ファむルが存圚しない堎合は、珟圚のプロゞェクト ファむルを含むディレクトリから開始されたす。 どちらのファむルも存圚しない堎合は、珟圚の䜜業ディレクトリが䜿甚されたす。

SDK バヌゞョンの代わりにランタむム バヌゞョンを指定する方法に぀いおは、「 タヌゲット フレヌムワヌク」を参照しおください。

global.json のスキヌマ

sdk

タむプ: object

遞択する.NET SDK に関する情報を指定したす。

version

  • タむプ: string

䜿甚する .NET SDK のバヌゞョン。

このフィヌルド:

  • 完党なバヌゞョン番号 (10.0.100 など) が必芁です。
  • 10、10.0、10.0.x などのバヌゞョン番号はサポヌトされおいたせん。
  • ワむルドカヌドはサポヌトされおいたせん。
  • バヌゞョン範囲はサポヌトされおいたせん。

allowPrerelease

  • タむプ: boolean
  • 以降利甚可胜: .NET Core 3.0 SDK。

䜿甚する SDK バヌゞョンを遞択するずきに、SDK リゟルバヌでプレリリヌス バヌゞョンを考慮する必芁があるかどうかを瀺したす。

この倀を明瀺的に蚭定しない堎合、既定倀は、Visual Studioから実行しおいるかどうかによっお異なりたす。

  • Visual Studioで not の堎合、既定倀は true です。
  • Visual Studioしおいる堎合は、芁求されたプレリリヌスの状態が䜿甚されたす。 ぀たり、 Visual Studioのプレビュヌ バヌゞョンを䜿甚しおいる堎合、たたは .NET SDK オプションのプレビュヌを䜿甚する (Tools>Options>Environment>Preview Features) 既定倀は true です。 それ以倖の堎合、既定倀は false です。

rollForward

  • タむプ: string
  • 以降利甚可胜: .NET Core 3.0 SDK。

SDK バヌゞョンを遞択するずきに、特定の SDK バヌゞョンがない堎合のフォヌルバックずしお、たたはより新しいバヌゞョンを䜿甚するためのディレクティブずしお䜿甚するロヌルフォワヌド ポリシヌ。 バヌゞョン は、rollForward に蚭定する堎合を陀き、latestMajor 倀を䜿甚しお指定する必芁がありたす。 既定のロヌルフォワヌド動䜜は、照合ルヌルによっお決たりたす。

䜿甚可胜なポリシヌずその動䜜を理解するには、x.y.znn の圢匏で SDK バヌゞョンの次の定矩を考慮しおください。

  • x はメゞャヌ バヌゞョンです。
  • y はマむナヌ バヌゞョンです。
  • z は機胜垯です。
  • nn はパッチ バヌゞョンです。

rollForward キヌの有効倀を次の衚に瀺したす。

Value Behavior
patch 指定されたバヌゞョンを䜿甚したす。
芋぀からない堎合は、最新のパッチ レベルにロヌルフォワヌドしたす。
芋぀からない堎合は、倱敗したす。

この倀は、以前のバヌゞョンの SDK の埓来の動䜜です。
feature 指定されたメゞャヌ、マむナヌ、および機胜垯に察しお最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、同じメゞャヌたたはマむナヌ内の次の䞊䜍の機胜垯にロヌルフォワヌドし、その機胜垯に最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
minor 指定されたメゞャヌ、マむナヌ、および機胜垯に察しお最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、同じメゞャヌ バヌゞョンたたはマむナヌ バヌゞョン内の次の䞊䜍の機胜垯にロヌルフォワヌドし、その機胜垯に最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、同じメゞャヌ内で次の高いマむナヌおよび機胜バンドにロヌルフォワヌドし、その機胜バンドに察しお最新のパッチレベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
major 指定されたメゞャヌ、マむナヌ、および機胜垯に察しお最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、同じメゞャヌ バヌゞョンたたはマむナヌ バヌゞョン内の次の䞊䜍の機胜垯にロヌルフォワヌドし、その機胜垯に最新のパッチ レベルを䜿甚したす。
芋぀からない堎合は、同じメゞャヌ内で次の高いマむナヌおよび機胜バンドにロヌルフォワヌドし、その機胜バンドに察しお最新のパッチレベルを䜿甚したす。
芋぀からない堎合は、次の䞊䜍のメゞャヌ、マむナヌ、フィヌチャヌバンドにロヌルフォワヌドし、そのフィヌチャヌバンドの最新パッチレベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
latestPatch 芁求されたメゞャヌ、マむナヌ、機胜バンドに䞀臎し、指定された倀以䞊のパッチレベルを持぀、むンストヌル枈みの最新パッチレベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
latestFeature 芁求されたメゞャヌおよびマむナヌず䞀臎し、機胜垯ずパッチ レベルが指定された倀以䞊である、むンストヌルされおいるものの䞭で最も高い機胜垯ずパッチ レベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
latestMinor 芁求されたメゞャヌず䞀臎し、マむナヌ、機胜垯、パッチ レベルが指定された倀以䞊である、むンストヌルされおいるものの䞭で最も高いマむナヌ、機胜垯、パッチ レベルを䜿甚したす。
芋぀からない堎合は、倱敗したす。
latestMajor 指定した倀以䞊のバヌゞョンで、むンストヌルされおいる最も高い.NET SDK を䜿甚したす。
芋぀からない堎合は、倱敗したす。
disable ロヌルフォワヌドしたせん。完党䞀臎が必芁です。†

† パッケヌゞ ロック ファむルを䜿甚する堎合は、SDK のバヌゞョンず䟝存関係グラフがロックステップに留たるよう、 rollForward を disable に蚭定したす。 関連する問題に぀いおは、「 https://github.com/dotnet/aspnetcore/issues/65061 ず https://github.com/dotnet/sdk/issues/48795」を参照しおください。

paths

  • 型: [string] の配列
  • 以降利甚可胜: .NET 10 SDK。

互換性のある .NET SDK を怜玢するずきに考慮する必芁がある堎所を指定したす。 パスは、絶察パスでも、 global.json ファむルの堎所に察する盞察パスでもかたいたせん。 特別な倀 $host$ は、実行䞭の dotnet 実行可胜ファむルに察応する堎所を衚したす。

これらのパスは、定矩されおいる順序で怜玢され、最初に 䞀臎する SDK が䜿甚されたす。

この機胜により、システムにグロヌバルにむンストヌルされおいないロヌカル SDK むンストヌル (リポゞトリ ルヌトに察する SDK やカスタム フォルダヌに配眮された SDK など) を䜿甚できたす。

"パス" 機胜は、dotnet run など、.NET SDK ず連携するコマンドを䜿甚する堎合にのみ機胜したす。 ネむティブ apphost ランチャヌ (app.exe) の実行、 dotnet app.dllでの実行、 dotnet exec app.dllでの実行などのシナリオには圱響したせん。 "パス" 機胜を䜿甚するには、 dotnet runなどの SDK コマンドを䜿甚する必芁がありたす。

errorMessage

  • タむプ: string
  • 以降利甚可胜: .NET 10 SDK。

SDK リゟルバヌが互換性のある .NET SDK を芋぀けるこずができない堎合に衚瀺されるカスタム ゚ラヌ メッセヌゞを指定したす。

msbuild-sdks

タむプ: object

個々のプロゞェクトではなく、1 か所でプロゞェクト SDK バヌゞョンを管理できたす。 詳现に぀いおは、「プロゞェクト SDK の解決方法」を参照しおください。

test

  • タむプ: object

テストに関する情報を指定したす。

runner

  • タむプ: string
  • 以降利甚可胜: .NET 10.0 SDK。

テストを怜出/実行するテスト ランナヌ。

global.json 内のコメント

global.json ファむル内のコメントは、JavaScript たたは C# スタむルのコメントを䜿甚した堎合にサポヌトされおいたす。 䟋えば次が挙げられたす。

{
   // This is a comment.
  "sdk": {
    "version": "8.0.300" /* This is comment 2*/
  /* This is a
  multiline comment.*/
  }
}

Examples

次の䟋は、プレリリヌス バヌゞョンの䜿甚を犁止する方法を瀺しおいたす。

{
  "sdk": {
    "allowPrerelease": false
  }
}

次の䟋は、指定したバヌゞョン以䞊の、むンストヌルされおいる最新バヌゞョンを䜿甚する方法を瀺しおいたす。 瀺されおいる JSON では、7.0.200 より前の SDK バヌゞョンがすべお犁止され、7.0.200 以降のバヌゞョン (8.0.xxx を含む) が蚱可されたす。

{
  "sdk": {
    "version": "7.0.200",
    "rollForward": "latestMajor"
  }
}

次の䟋は、指定された正確なバヌゞョンを䜿甚する方法を瀺しおいたす。

{
  "sdk": {
    "version": "8.0.302",
    "rollForward": "disable"
  }
}

次の䟋では、特定のメゞャヌ バヌゞョンずマむナヌ バヌゞョンでむンストヌルされる最新の機胜バンドず修正プログラムのバヌゞョンを䜿甚する方法を瀺したす。 瀺されおいる JSON では、8.0.302 より前のすべおの SDK バヌゞョンが犁止され、8.0.302 ずそれ以降の 8.0.xxx バヌゞョン (8.0.303 や 8.0.402 など) が蚱可されたす。

{
  "sdk": {
    "version": "8.0.302",
    "rollForward": "latestFeature"
  }
}

次の䟋は、特定のバヌゞョンのむンストヌルされおいる最新のパッチ バヌゞョンを䜿甚する方法を瀺しおいたす。 瀺されおいる JSON では、8.0.102 より前のすべおの SDK バヌゞョンが犁止され、8.0.102 たたはそれ以降の 8.0.1xx バヌゞョン (8.0.103 や 8.0.199 など) が蚱可されたす。

{
  "sdk": {
    "version": "8.0.102",
    "rollForward": "latestPatch"
  }
}

次の䟋は、远加の SDK 怜玢パスずカスタム ゚ラヌ メッセヌゞを指定する方法を瀺しおいたす。

{
  "sdk": {
    "version": "10.0.100",
    "paths": [ ".dotnet", "$host$" ],
    "errorMessage": "The required .NET SDK wasn't found. Please run ./install.sh to install it."
  }
}

次の䟋では、無効なバヌゞョンが指定されおいたす。 コマンド dotnet --info の出力には、"バヌゞョン '10.0' は 'sdk/version' 倀に察しお無効です" ずいう゚ラヌ メッセヌゞが衚瀺されたす。

{
  "sdk": {
    "version": "10.0",
    "rollForward": "latestFeature"
  }
}

次の䟋は、テスト ランナヌずしお Microsoft.Testing.Platform (MTP) を指定する方法を瀺しおいたす。

{
    "test": {
        "runner": "Microsoft.Testing.Platform"
    }
}

global.json ず.NET CLI

global.json ファむルで SDK のバヌゞョンを蚭定するには、マシンにむンストヌルされおいる SDK のバヌゞョンを把握しおおくず䟿利です。 その方法に぀いおは、「.NETが既にむンストヌルされおいるこずを確認する方法を参照しおください。

コンピュヌタヌに远加の .NET SDK バヌゞョンをむンストヌルするには、ダりンロヌド .NET ペヌゞを参照しおください。

次の䟋のような dotnet new コマンドを実行するこずにより、新しい global.json ファむルを珟圚のディレクトリに䜜成できたす。

dotnet new globaljson --sdk-version 8.0.302 --roll-forward latestFeature

照合ルヌル

Note

䞀臎する芏則は、dotnet.exe ゚ントリ ポむントによっお管理されたす。これは、むンストヌルされおいるすべおの.NET ランタむムに共通です。 .NET ランタむムの最新バヌゞョンの䞀臎する芏則は、耇数のランタむムがサむド バむ サむドでむンストヌルされおいる堎合、たたは global.json ファむルを䜿甚しおいる堎合に䜿甚されたす。

䜿甚する SDK のバヌゞョンを決定するずきには、次のルヌルが適甚されたす。

  • global.json ファむルが芋぀からない堎合、たたは global.json で SDK バヌゞョンが指定されおおらず、allowPrerelease 倀を指定しない堎合は、むンストヌルされおいる最も高い SDK バヌゞョンが䜿甚されたす (rollForward を latestMajor に蚭定するこずず同じです)。 プレリリヌス SDK のバヌゞョンを考慮するかどうかは、dotnet の呌び出し方法によっお決たりたす。

    • Visual Studioにいない堎合は、プレリリヌス バヌゞョンが怜蚎されたす。
    • Visual Studioしおいる堎合は、芁求されたプレリリヌスの状態が䜿甚されたす。 ぀たり、 Visual Studioのプレビュヌ バヌゞョンを䜿甚しおいる堎合、たたは .NET SDK オプションのプレビュヌを䜿甚する (Tools>Options>Environment>Preview Features) プレリリヌス バヌゞョンが考慮されたす。それ以倖の堎合は、リリヌス バヌゞョンのみが考慮されたす。
  • SDK のバヌゞョンは指定しおいないが 倀を指定しおいる allowPrerelease ファむルが芋぀かった堎合は、むンストヌルされおいる最新の SDK バヌゞョンが䜿甚されたす (rollForward を latestMajor に蚭定するのず同じ)。 最新の SDK バヌゞョンをリリヌスたたはプレリリヌスにできるかどうかは、allowPrerelease の倀によっお決たりたす。 true は、プレリリヌスバヌゞョンが考慮されるこずを瀺し、false は、リリヌス バヌゞョンのみが考慮されるこずを瀺したす。

  • global.json ファむルが芋぀かり、そこで SDK バヌゞョンが指定されおいる堎合は、次のようになりたす。

    • rollForward 倀が蚭定されおいない堎合、patch が既定の rollForward ポリシヌずしお䜿甚されたす。 それ以倖の堎合は、「rollForward」セクションで各倀ずその動䜜を確認したす。
    • 「allowPrerelease」セクションには、プレリリヌス バヌゞョンが考慮されるかどうか、 が蚭定されおいない堎合の既定の動䜜に぀いおの説明がありたす。

ビルドの譊告のトラブルシュヌティング

  • 次の譊告は、.NET SDK のプレリリヌス バヌゞョンを䜿甚しおプロゞェクトがコンパむルされたこずを瀺しおいたす。

    .NETのプレビュヌ バヌゞョンを䜿甚しおいたす。 https://aka.ms/dotnet-support-policy を参照

    .NET SDK のバヌゞョンには、高品質であるずいう歎史ずコミットメントがありたす。 ただし、プレリリヌス バヌゞョンを䜿甚しない堎合は、「allowPrerelease」セクションで䜿甚できるさたざたな方法を確認しおください。 .NET Core 3.0 以降のランタむムたたは SDK がむンストヌルされおいないマシンの堎合は、global.json ファむルを䜜成し、䜿甚する正確なバヌゞョンを指定する必芁がありたす。

  • 次の譊告は、プロゞェクトが EF Core 1.0 たたは 1.1 をタヌゲットにしおいるこずを瀺しおいたす。これは、.NET Core 2.1 SDK 以降のバヌゞョンず互換性がありたせん。

    スタヌトアップ プロゞェクト '{startupProject}' は、フレヌムワヌク '.NETCoreApp' バヌゞョン '{targetFrameworkVersion}' をタヌゲットにしおいたす。 このバヌゞョンの Entity Framework Core .NET コマンドラむン ツヌルでは、バヌゞョン 2.0 以降のみがサポヌトされたす。 叀いバヌゞョンのツヌルの䜿甚に぀いおは、https://go.microsoft.com/fwlink/?linkid=871254 をご芧ください。

    .NET Core 2.1 SDK (バヌゞョン 2.1.300) 以降では、dotnet ef コマンドが SDK に含たれおいたす。 プロゞェクトをコンパむルするには、.NET Core 2.0 SDK (バヌゞョン 2.1.201) 以前をコンピュヌタヌにむンストヌルし、global.json ファむルを䜿甚しお目的の SDK バヌゞョンを定矩したす。 dotnet ef コマンドの詳现に぀いおは、「EF Core .NET コマンド ラむン ツヌルを参照しおください。

  • global.json を䜿甚しお特定のバヌゞョンの .NET SDK を䜿甚しおいる堎合は、Visual Studioは .NET SDK の 1 ぀のコピヌのみをむンストヌルしたす。 そのため、Visual Studioバヌゞョンをアップグレヌドするず、新しいバヌゞョンのむンストヌルに䜿甚しおいた.NET SDK の以前のバヌゞョンが削陀されたす。 別のメゞャヌ .NET バヌゞョンであっおも、叀いバヌゞョンが削陀されたす。

.NET SDK のバヌゞョンをVisual Studio削陀しないようにするには、ダりンロヌド ペヌゞからスタンドアロン .NET SDK をむンストヌルしたす。 ただし、その堎合、Visual Studioを通じおそのバヌゞョンの .NET SDK の自動曎新が行われなくなり、セキュリティの問題が発生する可胜性がありたす。

こちらも参照ください