-Deterministische
Zorgt ervoor dat de compiler een assembly produceert waarvan de byte-for-byte-uitvoer identiek is in compilaties voor identieke invoer.
Syntaxis
-deterministic
Opmerkingen
Compileruitvoer van een bepaalde set invoer is standaard uniek, omdat de compiler een tijdstempel en een GUID toevoegt die wordt gegenereerd op basis van willekeurige getallen. U gebruikt de -deterministic
optie om een deterministische assembly te produceren, waarvan de binaire inhoud identiek is in compilaties zolang de invoer hetzelfde blijft.
De compiler beschouwt de volgende invoer voor het doel van determinisme:
- De reeks opdrachtregelparameters.
- De inhoud van het RSP-antwoordbestand van de compiler.
- De exacte versie van de gebruikte compiler en de bijbehorende assembly's waarnaar wordt verwezen.
- Het huidige mappad.
- De binaire inhoud van alle bestanden die rechtstreeks of indirect aan de compiler worden doorgegeven, waaronder:
- Bronbestanden
- Assembly's waarnaar wordt verwezen
- Modules waarnaar wordt verwezen
- Resources
- Het bestand met de sterke naamsleutel
- @ antwoordbestanden
- Analyses
- Regelsets
- Aanvullende bestanden die kunnen worden gebruikt door analyses
- De huidige cultuur (voor de taal waarin diagnostische gegevens en uitzonderingsberichten worden geproduceerd).
- De standaardcodering (of de huidige codepagina) als de codering niet is opgegeven.
- Het bestaan, het niet-bestaan en de inhoud van bestanden op de zoekpaden van de compiler (bijvoorbeeld opgegeven door
-lib
of-recurse
). - Het CLR-platform waarop de compiler wordt uitgevoerd.
- De waarde van , die van invloed kan zijn op het laden van
%LIBPATH%
analyseafhankelijkheid.
Wanneer bronnen openbaar beschikbaar zijn, kan deterministische compilatie worden gebruikt om te bepalen of een binair bestand wordt gecompileerd vanuit een vertrouwde bron. Het kan ook handig zijn in een doorlopend buildsysteem om te bepalen of buildstappen die afhankelijk zijn van wijzigingen in een binair bestand moeten worden uitgevoerd.