Ustawienia konfiguracji środowiska uruchomieniowego .NET

Program .NET 5+ (w tym wersje programu .NET Core) obsługuje używanie plików konfiguracji i zmiennych środowiskowych do konfigurowania zachowania aplikacji .NET w czasie działania.

Uwaga

Artykuły w tej sekcji dotyczą konfiguracji samego środowiska uruchomieniowego .NET. Jeśli migrujesz do programu .NET Core 3.1 lub nowszego i szukasz zamiennika pliku app.configlub po prostu chcesz użyć niestandardowych wartości konfiguracji w aplikacji .NET, zobacz klasę i konfigurację na platformie .NET.

Użycie tych ustawień jest atrakcyjną opcją, jeśli:

  • Nie jesteś właścicielem ani nie kontrolujesz kodu źródłowego aplikacji, dlatego nie możesz go skonfigurować programowo.
  • Wiele wystąpień aplikacji działa w tym samym czasie w jednym systemie i chcesz skonfigurować każde z nich w celu uzyskania optymalnej wydajności.

Program .NET udostępnia następujące mechanizmy konfigurowania zachowania środowiska uruchomieniowego .NET:

Porada

Skonfigurowanie opcji przy użyciu zmiennej środowiskowej powoduje zastosowanie ustawienia do wszystkich aplikacji .NET. Skonfigurowanie opcji w pliku runtimeconfig.json lub pliku projektu powoduje zastosowanie ustawienia tylko do tej aplikacji.

Niektóre wartości konfiguracji można również ustawić programowo, wywołując AppContext.SetSwitch metodę .

Artykuły w tej sekcji dokumentacji są zorganizowane według kategorii, na przykład debugowania iwyrzucania elementów bezużytecznych. Tam, gdzie ma to zastosowanie, opcje konfiguracji są wyświetlane dla plików runtimeconfig.json, właściwości MSBuild, zmiennych środowiskowych i, w przypadku odsyłaczy ,app.config plików dla .NET Framework projektów.

runtimeconfig.json

Podczas tworzyć projekt w katalogu wyjściowym jest generowany plik [appname].runtimeconfig.json . Jeśli plik runtimeconfig.template.json istnieje w tym samym folderze co plik projektu, wszystkie opcje konfiguracji, które zawiera, zostaną wstawione do pliku [appname].runtimeconfig.json . Jeśli samodzielnie konfigurowasz aplikację, umieść wszystkie opcje konfiguracji w pliku runtimeconfig.template.json . Jeśli właśnie uruchamiasz aplikację, wstaw je bezpośrednio do pliku [appname].runtimeconfig.json .

Uwaga

  • Plik [appname].runtimeconfig.json zostanie zastąpiony w kolejnych kompilacjach.
  • Jeśli aplikacja nie jest i chcesz, aby opcje konfiguracji zostały skopiowane z OutputType do pliku Exe, GenerateRuntimeConfigurationFilestrue musisz jawnie ustawić wartość na w pliku projektu.OutputTypeExe W przypadku aplikacji, które wymagają pliku runtimeconfig.json , wartość domyślna tej właściwości to .

Określ opcje konfiguracji środowiska uruchomieniowego w sekcji configProperties plików runtimeconfig.json . Ta sekcja ma postać:

"configProperties": {
  "config-property-name1": "config-value1",
  "config-property-name2": "config-value2"
}

Przykładowy plik [appname].runtimeconfig.json

Jeśli umieszczasz opcje w wyjściowym pliku JSON, zagnieżdż je we właściwości runtimeOptions .

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "3.1.0"
    },
    "configProperties": {
      "System.GC.Concurrent": false,
      "System.Threading.ThreadPool.MinThreads": 4,
      "System.Threading.ThreadPool.MaxThreads": 25
    }
  }
}

Przykładowy plik runtimeconfig.template.json

Jeśli umieszczasz opcje w pliku JSON szablonu, pomiń właściwość runtimeOptions .

{
  "configProperties": {
    "System.GC.Concurrent": false,
    "System.Threading.ThreadPool.MinThreads": "4",
    "System.Threading.ThreadPool.MaxThreads": "25"
  }
}

właściwości programu MSBuild

Niektóre opcje konfiguracji środowiska uruchomieniowego można ustawić przy użyciu MSBuild w pliku csproj lub vbproj projektów .NET Core w stylu zestawu SDK. MSBuild mają pierwszeństwo przed opcjami ustawionymi w pliku runtimeconfig.template.json.

Oto przykładowy plik projektu w stylu zestawu SDK z MSBuild właściwościami do konfigurowania zachowania w czasie działania:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
    <ThreadPoolMinThreads>4</ThreadPoolMinThreads>
    <ThreadPoolMaxThreads>25</ThreadPoolMaxThreads>
  </PropertyGroup>

</Project>

MSBuild dotyczące konfigurowania zachowania w czasie działania są zanotowane w poszczególnych artykułach dla każdego obszaru, na przykład w przypadku wyrzucania elementów bezużytecznych. Są one również wymienione w sekcji Konfiguracja środowiska uruchomieniowego w MSBuild odwołania do właściwości dla projektów w stylu zestawu SDK.

Zmienne środowiskowe

Zmienne środowiskowe mogą służyć do dostarczania niektórych informacji o konfiguracji środowiska uruchomieniowego. Skonfigurowanie opcji środowiska uruchomieniowego przy użyciu zmiennej środowiskowej powoduje zastosowanie ustawienia do wszystkich aplikacji .NET Core. Pokrętła konfiguracji określone jako zmienne środowiskowe zwykle mają prefiks DOTNET_.

Uwaga

Program .NET 6 standaryzuje prefiks DOTNET_ , a nie COMPlus_ zmienne środowiskowe, które konfigurują zachowanie środowiska uruchomieniowego .NET. Jednak prefiks COMPlus_ będzie nadal działać. Jeśli używasz poprzedniej wersji środowiska uruchomieniowego .NET, COMPlus_ nadal należy używać prefiksu dla zmiennych środowiskowych.

Zmienne środowiskowe można definiować z Windows Panel sterowania wiersza polecenia lub programowo, Environment.SetEnvironmentVariable(String, String) wywołując metodę zarówno w systemach Windows, jak i Unix.

Poniższe przykłady pokazują, jak ustawić zmienną środowiskową w wierszu polecenia:

# Windows
set DOTNET_GCRetainVM=1

# Powershell
$env:DOTNET_GCRetainVM="1"

# Unix
export DOTNET_GCRetainVM=1

Zobacz też