Предполагая, что вы установили инкрементные компиляции [get и], следующим шагом будет подключение к последовательности MSBuild. Загляните в FrameworkDir\Microsoft.Common.Targets
. Проблема в том, что все просто не настроено для работы таким образом - тот факт, что есть шаги _TimestampBeforeCompile
и _TimeStampAfterCompile
, которые просто показывают, что вы не можете определить априори, если что-то собирается скомпилировать. Хотя теоретически вы могли бы подключиться до [конкретного языка] CoreCompile [например, в Microsoft.CSharp.targets], проблема заключается в том, что вам нужно иметь тот же Inputs
, что и для определения того, произойдет ли это. , что будет означать много вырезать и вставлять и синхронизировать с системными файлами. Другая вещь, о которой следует опасаться, отмечена в комментарии вверху цели _ComputeNonExistentFileProperty
.
Таким образом, помимо выполнения некоторых очень глубоких модификаций последовательности (например, зацепление бита 'post build', который вызывает вторую компиляцию, если ваш пользовательский _TimeStampAfterCompile
обнаружит, что компиляция произошла, я бы сказал, нет простого, рекомендуемого или поддерживаемого способа.
Сказав это, AssemblyFileVersion
(вы ссылаетесь на FileAssemblyVersion
, которого не существует: P) легко изменить после компиляции, поскольку он является просто ресурсом - вы найдете инструменты для этого. Но я предполагаю, что вы на самом деле говорите о том, чтобы сделать и это, и AssemblyVersion
, который нельзя подправить после факта таким же образом.