Поделиться через


-детерминированный

Указывает компилятору на необходимость создания сборки, чьи побайтовые выходные данные идентичны в разных компиляциях, если входные данные идентичны.

Синтаксис

-deterministic

Замечания

По умолчанию выходные данные компилятора из заданного набора входных данных являются уникальными, так как компилятор добавляет метку времени и GUID, создаваемый из случайных чисел. Вы можете использовать параметр -deterministic для создания детерминированной сборки, двоичное содержимое которой идентично в разных компиляциях при условии, что входные данные не изменяются.

Компилятор рассматривает следующие входные данные в целях детерминизма:

  • Последовательность параметров командной строки.
  • Содержимое RSP-файла ответов в компиляторе.
  • Точная версия используемого компилятора и его связанные сборки.
  • Текущий путь каталога.
  • Двоичное содержимое всех файлов явно передается компилятору напрямую или косвенно, включая:
    • Исходные файлы
    • Ссылаемые сборки
    • Связанные модули
    • Ресурсы
    • Файл ключа строгого имени
    • Файлы ответов @
    • Анализаторы
    • Наборы правил
    • Дополнительные файлы, которые могут использоваться анализаторами
  • Текущая культура (для языка, на котором создаются сообщения о диагностике и исключениях).
  • Кодировка по умолчанию (или текущая кодовая страница), если кодировка не указана.
  • Наличие, отсутствие и содержимое файлов на пути поиска компилятора (задается, например, с помощью -lib или -recurse).
  • Платформа CLR, на которой выполняется компилятор.
  • Значение %LIBPATH%, которое может повлиять на загрузку зависимостей анализатора.

Когда источники общедоступны, детерминированная компиляция может использоваться для определения того, компилируется ли двоичный файл из доверенного источника. Она также может быть полезна в системе непрерывной сборки для определения того, должны ли выполняться шаги сборки, зависящие от изменений в двоичном файле.

См. также