Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bewirkt, dass der Compiler eine Assembly erstellt, deren Byte-für-Byte-Ausgabe über Kompilierungen identisch ist, wenn die Eingaben identisch sind.
Syntax
-deterministic
Bemerkungen
Standardmäßig ist die Compilerausgabe aus einem bestimmten Satz von Eingaben eindeutig, da der Compiler einen Zeitstempel und eine GUID hinzufügt, die aus Zufallszahlen generiert wird. Verwenden Sie die -deterministic-Option zum Erzeugen einer deterministischen Assembly. Deren Inhalt im Binärformat muss über Kompilierungen identisch sein, solange die Eingabe identisch ist.
Der Compiler betrachtet die folgenden Eingaben für den Zweck des Determinismus:
- Die Sequenz der Befehlszeilenparameter.
- Der Inhalt der rsp-Antwortdatei des Compilers.
- Die genaue Version des verwendeten Compilers und seiner verwiesenen Assemblys.
- Der aktuelle Verzeichnispfad.
- Die binären Inhalte aller Dateien, die explizit und entweder direkt oder indirekt an den Compiler übergeben werden, einschließlich:
- Quelldateien
- Assemblys, auf die verwiesen wird
- Module, auf die verwiesen wird
- Ressourcen
- Die Schlüsseldatei mit starkem Namen
- @ Antwortdateien
- Analysatoren
- Regelsätze
- Zusätzliche Dateien, die von Analyzern verwendet werden können
- Die aktuelle Kultur (für die Sprache, in der die Diagnose und die Ausnahmenachrichten erstellt werden).
- Die Standardcodierung (oder die aktuelle Codeseite), wenn die Codierung nicht angegeben ist.
- Das Vorhandensein, Nichtvorhandensein und die Inhalte der Dateien auf den Suchpfaden des Compilers (z. B. von
-liboder-recurseangegeben). - Die CLR-Plattform, auf der der Compiler ausgeführt wird.
- Der Wert von
%LIBPATH%, der das Abhängigkeitsladen des Analyzers beeinträchtigen kann.
Wenn Quellen öffentlich verfügbar sind, kann die deterministische Kompilierung verwendet werden, um festzustellen, ob eine Binärdatei aus einer vertrauenswürdigen Quelle kompiliert wird. Es kann auch in einem fortlaufenden Buildsystem hilfreich sein, um zu bestimmen, ob Buildschritte, die von Änderungen an einer Binärdatei abhängig sind, ausgeführt werden müssen.