-deterministic

Powoduje, że kompilator tworzy zestaw, którego dane wyjściowe bajtu dla bajtów są identyczne w kompilacjach dla identycznych danych wejściowych.

Składnia

-deterministic

Uwagi

Domyślnie dane wyjściowe kompilatora z danego zestawu danych wejściowych są unikatowe, ponieważ kompilator dodaje znacznik czasu i identyfikator GUID generowany na podstawie liczb losowych. Możesz użyć -deterministic opcji , aby utworzyć zestaw deterministyczny, którego zawartość binarna jest identyczna w kompilacjach, o ile dane wejściowe pozostają takie same.

Kompilator uwzględnia następujące dane wejściowe w celu determinizmu:

  • Sekwencja parametrów wiersza polecenia.
  • Zawartość pliku odpowiedzi rsp kompilatora.
  • Dokładna wersja używanego kompilatora i jego zestawów, do których się odwołuje.
  • Bieżąca ścieżka katalogu.
  • Zawartość binarna wszystkich plików jawnie przekazana kompilatorowi bezpośrednio lub pośrednio, w tym:
    • Pliki źródłowe
    • Zestawy, do których odwołuje się odwołanie
    • Moduły, do których odwołuje się odwołanie
    • Zasoby
    • Plik klucza silnej nazwy
    • @ pliki odpowiedzi
    • Analizatory
    • Zestawy reguł
    • Dodatkowe pliki, które mogą być używane przez analizatory
  • Bieżąca kultura (dla języka, w którym są generowane komunikaty diagnostyczne i komunikaty o wyjątkach).
  • Domyślne kodowanie (lub bieżąca strona kodowa), jeśli kodowanie nie jest określone.
  • Istnienie, brak istnienia i zawartość plików w ścieżkach wyszukiwania kompilatora (określonych na przykład przez -lib lub -recurse).
  • Platforma CLR, na której jest uruchamiany kompilator.
  • Wartość %LIBPATH%, która może mieć wpływ na ładowanie zależności analizatora.

Gdy źródła są publicznie dostępne, kompilacja deterministyczna może służyć do ustalenia, czy plik binarny jest kompilowany z zaufanego źródła. Może to być również przydatne w systemie ciągłej kompilacji do określania, czy należy wykonać kroki kompilacji zależne od zmian w pliku binarnym.

Zobacz też