Partager via


-déterministe

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

Remarques

Par défaut, la sortie du compilateur à partir d’un ensemble donné d’entrées est unique, car le compilateur ajoute un horodatage et un GUID générés à 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 de déterminisme :

  • 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
    • Fichiers supplémentaires qui peuvent être utilisés par les analyseurs
  • La culture actuelle (pour le langage dans lequel les diagnostics et les messages d’exception sont produits).
  • Encodage par défaut (ou page de codes actuel) 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).
  • Plateforme CLR sur laquelle le compilateur est exécuté.
  • La valeur de %LIBPATH%, qui peut affecter le chargement des dépendances de l’analyseur.

Lorsque des sources sont disponibles publiquement, la compilation déterministe peut être utilisée pour déterminer si un binaire est compilé à partir d’une source approuvée. Il peut également être utile dans un système de génération continu pour déterminer si les étapes de génération qui dépendent des modifications apportées à un fichier binaire doivent être exécutées.

Voir aussi