.NET には、.NET ランタイムの動作を構成するための次のメカニズムが用意されています。
メカニズム | 注記 |
---|---|
runtimeconfig.json ファイル | 特定のアプリに設定を適用します。 このファイルは、アプリの複数のインスタンスが 1 つのシステムで同時に実行され、それぞれを最適なパフォーマンスで構成する場合に使用します。 |
MSBuild のプロパティ | 特定のアプリに設定を適用します。 MSBuild プロパティは、 runtimeconfig.jsonの設定よりも優先されます。 |
環境変数 | すべての .NET アプリに設定を適用します。 |
AppContext.SetSwitch メソッドを呼び出すことによって、一部の構成値をプログラムで設定することもできます。
注
このセクションの記事では、.NET ランタイム自体の構成について説明します。 .NET Framework から .NET にアプリを移行し、 app.config ファイルの代わりを探している場合は、「 .NET にアップグレードした後の最新化」を参照してください。 .NET アプリにカスタム構成値を指定する方法については、「 .NET での構成」を参照してください。
ドキュメントのこのセクションの記事は、 デバッグ や ガベージ コレクションなどのカテゴリ別に整理されています。 必要に応じて、 runtimeconfig.json ファイル、MSBuild プロパティ、環境変数、および .NET Framework プロジェクトの相互参照用 のapp.config ファイルの構成オプションが表示されます。
runtimeconfig.json
プロジェクトが ビルドされると、出力ディレクトリに [appname].runtimeconfig.json ファイルが生成されます。 runtimeconfig.template.json ファイルがプロジェクト ファイルと同じフォルダーに存在する場合は、そのファイルに含まれる構成オプションが [appname].runtimeconfig.json ファイルに挿入されます。 アプリを自分でビルドする場合は、 runtimeconfig.template.json ファイルに構成オプションを配置します。 アプリを実行しているだけの場合は、[ appname].runtimeconfig.json ファイルに直接挿入します。
注
- [appname].runtimeconfig.json ファイルは後続のビルドで上書きされます。
- アプリの
OutputType
がExe
されておらず、構成オプションを runtimeconfig.template.json から [appname].runtimeconfig.jsonにコピーする場合は、プロジェクト ファイルにGenerateRuntimeConfigurationFiles
true
を明示的に設定する必要があります。 runtimeconfig.json ファイルを必要とするアプリの場合、このプロパティの既定値はtrue
です。
runtimeconfig.jsonまたはruntimeconfig.template.json ファイルの configProperties セクションでランタイム構成オプションを指定します。 このセクションの形式は次のとおりです。
"configProperties": {
"config-property-name1": "config-value1",
"config-property-name2": "config-value2"
}
[appname].runtimeconfig.json ファイルの例
出力 JSON ファイルにオプションを配置する場合は、runtimeOptions
プロパティの下に入れ子にします。
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": 4,
"System.Threading.ThreadPool.MaxThreads": 25
}
}
}
runtimeconfig.template.json ファイルの例
テンプレート JSON ファイルにオプションを配置する場合は、 プロパティをruntimeOptions
します。
{
"configProperties": {
"System.Globalization.UseNls": true,
"System.Net.DisableIPv6": true,
"System.GC.Concurrent": false,
"System.Threading.ThreadPool.MinThreads": "4",
"System.Threading.ThreadPool.MaxThreads": "25"
}
}
MSBuild プロパティ
一部のランタイム構成オプションは、SDK スタイルの .NET プロジェクトの .csproj または .vbproj ファイルの MSBuild プロパティを使用して設定できます。 MSBuild プロパティは、 runtimeconfig.template.json ファイルで設定されたオプションよりも優先されます。
特定の MSBuild プロパティがないランタイム構成設定の場合は、代わりに RuntimeHostConfigurationOption
MSBuild 項目を使用できます。
属性の値として Include
設定名を使用します。
.NET ランタイムの動作を構成するための MSBuild プロパティを含む SDK スタイルのプロジェクト ファイルの例を次に示します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
<ThreadPoolMaxThreads>25</ThreadPoolMaxThreads>
</PropertyGroup>
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
<RuntimeHostConfigurationOption Include="System.Net.DisableIPv6" Value="true" />
</ItemGroup>
</Project>
ランタイムの動作を構成するための MSBuild プロパティは、 ガベージ コレクションなど、各領域の個々のアーティクルに示されています。 また、SDK スタイルのプロジェクトの MSBuild プロパティ リファレンスの ランタイム構成 セクションにも記載されています。
環境変数
環境変数を使用して、いくつかのランタイム構成情報を提供できます。 環境変数として指定された構成ノブには、通常、プレフィックス DOTNET_があります。
注
.NET 6 では、.NET の実行時の動作を構成する環境変数のプレフィックスが、DOTNET_
ではなく COMPlus_
に標準化されています。 ただし、COMPlus_
プレフィックスは引き続き機能します。 以前のバージョンの .NET ランタイムを使用している場合でも、環境変数には COMPlus_
プレフィックスを使用する必要があります。
環境変数は、Windows コントロール パネルから、コマンド ラインで定義することも、Windows ベースと Unix ベースのシステムの両方で Environment.SetEnvironmentVariable(String, String) メソッドを呼び出すことによってプログラムによって定義することもできます。
次の例は、コマンド ラインで環境変数を設定する方法を示しています。
# Windows
set DOTNET_GCRetainVM=1
# Powershell
$env:DOTNET_GCRetainVM="1"
# Unix
export DOTNET_GCRetainVM=1
こちらも参照ください
.NET