• Как избежать разницы контрольных сумм при пересборке?

    @SHakeR Автор вопроса
    Так вопрос-то звучит по другому: есть исходники, в них не меняется ни один байт, собираем релиз и получаем контрольную сумму (КС1) всех составляющих. Далее берем все те же исходники(ни один байт, ни один символ не поменялся) и собираем релиз еще раз, получаем контрольную сумму (КС2).
    КС1 и КС2 будут разными, так как во времясборки в PE заголовок exe'шников и dll записывается время сборки и контрольная сумма. Остальные байты exe'шника по идее должны быть одинаковы, исходники-то ведь не поменялись, правильно? А вот и неправильно! Как я понял, компилятор, например, в случае использования конструкции switch со стринговыми case'ами создает внутренний словарь(PrivateImplementationDetails) соответствия стринга ключу типа int, и присваивает этому словарю рандомный GUID при каждой пересборке.
    Так вот вопрос-то в следующем: как скомпилить .Net приложение, чтобы контрольная сумма исполняемой части(отбросим PE-header) не менялась при перекомпиляции из одних исходников?
  • Как избежать разницы контрольных сумм при пересборке?

    @SHakeR Автор вопроса
    Ок, тогда как аудиторам подтвердить валидность релиза и соответствия исходников файлам релиза?
    Тем более, другие отделы, занимающиеся, например, разработкой софта для Unix-систем обходят это ограничение замораживанием системной даты, что, в принципе, равнозначно тому, что делаю с помощью дополнительного софта.
    P. S. Нашей СБ важны другие вещи ;)