How do set GCServer to true in a .net core project? Usually in .net framework projects I add an App.Config xml file that sets GCServer variable to true but this does not work in a .net core project running on Linux (the App.Config file is generated and publish but the variable still doesn’t change)
Advertisement
Answer
Add <ServerGarbageCollection>True</ServerGarbageCollection>
to your csproj file. Like:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> ... <ServerGarbageCollection>true</ServerGarbageCollection> ... </PropertyGroup> </Project>
To confirm that it’s being correctly set during build, check your <PROJECT>.runtimeconfig.json
file in the bin
directory. It should contain something like:
"configProperties": { "System.GC.Server": true }
In some cases, the GCServer is already the default. You can check if there’s a default value your msbuild file by using msbuild /pp
:
$ dotnet msbuild /pp | grep -i ServerGarbage <ServerGarbageCollection>true</ServerGarbageCollection> <RuntimeHostConfigurationOption Include="System.GC.Server" Condition="'$(ServerGarbageCollection)' != ''" Value="$(ServerGarbageCollection)" />
If you have a csproj file with Sdk="Microsoft.NET.Sdk.Web"
, then it’s already the default:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.1</TargetFramework> </PropertyGroup> </Project> $ dotnet msbuild /pp | grep -i ServerGarbage <ServerGarbageCollection>true</ServerGarbageCollection> <RuntimeHostConfigurationOption Include="System.GC.Server" Condition="'$(ServerGarbageCollection)' != ''" Value="$(ServerGarbageCollection)" />