Хэш фиксации Git влияет на двоичный файл Visual Studio dll/exe для нового формата csproj

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

Самый простой способ размножения:

  1. Построить проект
  2. Измените сообщение коммита git на любое другое (или даже такое же) через git commit --ammend -m "Some message"
  3. Построить проект
  4. Сравните двоичные файлы (они отличаются)

Я хочу, чтобы мои двоичные файлы были идентичны, если проект идентичен, независимо от того, из какого git-коммита он был собран (так же, как это было со старым форматом csproj). Как я могу этого добиться?


person Grigoriy    schedule 10.03.2021    source источник


Ответы (1)


Оказалось, что один из упомянутых проектов (давайте назовем его SomeProject) использовал Nerdbank.GitVersioning для создания версии файла. Вот почему все проекты, которые зависят от двоичных файлов SomeProject, менялись при сборке.

person Grigoriy    schedule 12.03.2021