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