У меня много проектов NET Framework. Старые проекты имеют старый формат csproj с детерминированным=true. Поэтому всякий раз, когда я собираю сборку, я получаю двоичный файл с одним и тем же выходным файлом (dll или exe). Новые проекты имеют новый формат csproj. В новом формате отсутствует детерминированный вариант. Самое странное, что текущий хэш git checkout влияет на выходной бинарный файл. Поэтому я получаю один и тот же двоичный файл только для одного и того же коммита git. Но если я изменю что-то, что не влияет на проект, и соберу его, я получу другой двоичный файл.
Самый простой способ размножения:
- Построить проект
- Измените сообщение коммита git на любое другое (или даже такое же) через git
commit --ammend -m "Some message"
- Построить проект
- Сравните двоичные файлы (они отличаются)
Я хочу, чтобы мои двоичные файлы были идентичны, если проект идентичен, независимо от того, из какого git-коммита он был собран (так же, как это было со старым форматом csproj). Как я могу этого добиться?