MSBuild Server

MSBuild Server förbättrar prestandan för .NET Core-versioner, som anropas när du använder dotnet build kommandot från .NET CLI i Windows-, Linux- eller Mac .NET Core-byggmiljöer. I stället för att starta byggprocessen varje gång en version begärs cachelagras mycket av kontexten i en tidskrävande process så att den kan återanvändas av nästa version. MSBuild Server är inte relevant för Visual Studio-versioner, eftersom Visual Studio fungerar som värd för MSBuild och redan cachelagrar all nödvändig kontext.

MSBuild Server är vanligtvis inte användbart i CI-scenarier som Azure Pipeline-byggen, eftersom pipelines vanligtvis skapar en byggmiljö på begäran för varje bygg och sedan avvecklar den när bygget har slutförts.

Aktivera MSBuild Server

Från och med .NET 11 SDK aktiveras MSBuild Server som standard för MSBuild-baserade .NET CLI-kommandon som dotnet build och dotnet msbuild.

I tidigare .NET SDK:er var MSBuild Server inaktiverad som standard och du aktiverade den genom att ange DOTNET_CLI_USE_MSBUILD_SERVER till true eller 1.

Första gången du startar en version startas byggservern och cachen fylls i. Cachen sparas efter att bygget har slutförts. den andra versionen går därför snabbare eftersom starttiden minskas avsevärt på grund av den cachelagrade informationen. Cacheminnet bevaras när bygget har slutförts, men efter en inaktivitetstid på 15 minuter stängs servern av. Därför är det främst fördelaktigt i repetitiva byggscenarier där många versioner begärs i nära följd.

MSBuild Server aktiveras också automatiskt för flertrådade byggen (-mt), eftersom flertrådad körning utför projektarbete i serverprocessen.

Stänga av eller inaktivera MSBuild Server

Det finns några olika sätt att inaktivera användningen av MSBuild-servern. Om du bara vill stänga av servern som körs kan du utfärda kommandot dotnet build-server shutdown.

Om du vill inaktivera funktionen för alla versioner på en dator kan du ange systemmiljövariabeln DOTNET_CLI_USE_MSBUILD_SERVER till false. Du kan också ange den här variabeln per projekt i ett verktyg som VS Code i launch.json.

Om du vill inaktivera MSBuild Server för ett visst anrop av en kommandoradsversion kan du använda alternativet /nr:false (eller /node-reuse:false). MSBuild Server är en form av återanvändning av noder, så om du inaktiverar återanvändning av noder inaktiveras även servern och byggkörningarna i startprocessen.

MSBuild Server används inte för anrop som i sig är inkompatibla med att vara värd för bygget i en separat process, till exempel -help, -versionoch spela upp en binär logg igen. Dessa versioner återgår till att köras i startprocessen.

Fastställa den aktuella statusen för byggservern

Du kan visa processstatus på datorn och leta efter MSBuild-serverprocesser. MSBuild-serverprocesser startas med dotnet.exe och visar en sökväg till MSBuild.dll och kommandoalternativet /nodemode:8, där 8 anger MSBuild Server ( /nodemode:1 anger de normala MSBuild-arbetsnoderna).

Versioner som begär MSBuild Server registrerar också vad som händer med den. Kör med -v:diageller samla in en binär logg med -blför att se om bygget startar en ny server, återanvänder en som körs eller återgår till en processbaserad version och varför.

Se även