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


-deterministic

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

Синтаксис

-deterministic

Замечания

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

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

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

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

См. также