-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.