Condividi tramite


-deterministico

Fa sì che il compilatore generi un assembly il cui output byte per byte è identico in tutte le compilazioni se si usano input identici.

Sintassi

-deterministic

Osservazioni:

Per impostazione predefinita, l'output del compilatore da un determinato set di input è univoco, poiché il compilatore aggiunge un timestamp e un GUID generato da numeri casuali. L'opzione -deterministic si usa per generare un assembly deterministico il cui contenuto binario è identico in tutte le compilazioni purché l'input rimanga lo stesso.

Il compilatore considera gli input seguenti allo scopo di determinismo:

  • La sequenza dei parametri della riga di comando.
  • Il contenuto del file di risposta .rsp del compilatore.
  • La versione precisa del compilatore in uso e i relativi assembly di riferimento.
  • Il percorso della directory corrente.
  • Il contenuto binario di tutti i file passati in modo esplicito al compilatore direttamente o indirettamente, tra cui:
    • File di origine
    • Assembly di riferimento
    • Moduli a cui viene fatto riferimento
    • Risorse
    • Il file di chiave con nome forte
    • @ file di risposta
    • Analizzatori
    • Set di regole
    • File aggiuntivi che possono essere usati dagli analizzatori
  • La cultura corrente (per la lingua in cui vengono generati i diagnostici e i messaggi di eccezione).
  • Codifica predefinita (o tabella codici corrente) se la codifica non è specificata.
  • L'esistenza, non esistenza e contenuto dei file nei percorsi di ricerca del compilatore (specificati, ad esempio, da -lib o -recurse).
  • Piattaforma CLR in cui viene eseguito il compilatore.
  • Il valore di %LIBPATH%, che può influenzare il caricamento delle dipendenze dell'analizzatore.

Quando le origini sono disponibili pubblicamente, è possibile usare la compilazione deterministica per stabilire se un file binario viene compilato da un'origine attendibile. Può anche essere utile in un sistema di compilazione continuo per determinare se i passaggi di compilazione dipendenti dalle modifiche apportate a un file binario devono essere eseguiti.

Vedere anche