Dela via


-Deterministiska

Gör att kompilatorn skapar en sammansättning vars byte-för-byte-utdata är identiska mellan kompileringar för identiska indata.

Syntax

-deterministic

Kommentarer

Som standard är kompilatorns utdata från en viss uppsättning indata unika, eftersom kompilatorn lägger till en tidsstämpel och ett GUID som genereras från slumpmässiga tal. Du använder -deterministic alternativet för att skapa en deterministisk sammansättning, en vars binära innehåll är identiskt mellan kompileringar så länge indata förblir desamma.

Kompilatorn tar hänsyn till följande indata för determinism:

  • Sekvensen med kommandoradsparametrar.
  • Innehållet i kompilatorns .rsp-svarsfil.
  • Den exakta versionen av kompilatorn som används och dess refererade sammansättningar.
  • Den aktuella katalogsökvägen.
  • Det binära innehållet i alla filer som uttryckligen skickas till kompilatorn antingen direkt eller indirekt, inklusive:
    • Källfiler
    • Refererade sammansättningar
    • Refererade moduler
    • Resurser
    • Den starka namnnyckelfilen
    • @ svarsfiler
    • Analysverktyg
    • Regeluppsättningar
    • Ytterligare filer som kan användas av analysverktyg
  • Den aktuella kulturen (för det språk där diagnostik- och undantagsmeddelanden skapas).
  • Standardkodning (eller aktuell kodsida) om kodningen inte har angetts.
  • Förekomsten, icke-existensen och innehållet i filer på kompilatorns sökvägar (anges till exempel av -lib eller -recurse).
  • DEN CLR-plattform som kompilatorn körs på.
  • Värdet för , som kan påverka inläsning av %LIBPATH%analysverktygsberoende.

När källor är offentligt tillgängliga kan deterministisk kompilering användas för att fastställa om en binär fil kompileras från en betrodd källa. Det kan också vara användbart i ett system för kontinuerlig bygge för att avgöra om byggsteg som är beroende av ändringar i en binär fil måste köras.

Se även