Partager via


-deterministic

Indique au compilateur de générer un assembly dont la sortie octet-pour-octet est identique dans les compilations pour les entrées identiques.

Syntaxe

-deterministic

Notes

Par défaut, le résultat de la compilation d’un ensemble défini d’entrées est unique, étant donné que le compilateur ajoute un horodatage et un GUID qui est généré à partir de nombres aléatoires. Utilisez l’option -deterministic pour générer un assembly déterministe, dont le contenu binaire sera identique dans les compilations tant que l’entrée restera la même.

Le compilateur considère les entrées suivantes à des fins déterministes :

  • La séquence des paramètres de ligne de commande.
  • Le contenu du fichier réponse .rsp du compilateur.
  • La version précise du compilateur utilisée et ses assemblys référencés.
  • Le chemin de répertoire actif.
  • Le contenu binaire de tous les fichiers explicitement passés au compilateur directement ou indirectement, notamment :
    • Fichiers sources
    • Assemblys référencés
    • Modules référencés
    • Ressources
    • Fichier de clé de nom fort
    • Fichiers réponse @
    • Analyseurs
    • Ensembles de règles
    • Autres fichiers susceptibles d’être utilisés par les analyseurs
  • La culture actuelle (pour le langage dans lequel les diagnostics et les messages d’exception sont produits).
  • L’encodage par défaut (ou la page de codes active) si l’encodage n’est pas spécifié.
  • L’existence, la non-existence et le contenu des fichiers sur les chemins de recherche du compilateur (spécifiés, par exemple, par -lib ou -recurse).
  • La plateforme CLR sur laquelle est exécuté le compilateur.
  • La valeur de %LIBPATH%, qui peut affecter le chargement des dépendances de l’analyseur.

Quand les sources sont accessibles à tous, la compilation déterministe peut servir à établir si un fichier binaire est compilé à partir d’une source approuvée. Il peut aussi être utile dans un système de génération en continu pour déterminer si les étapes de génération qui sont dépendantes des changements apportés à un binaire doivent être exécutées.

Voir aussi