Как подобрать последнюю версию AssemblyInfo.cs, измененную событием перед сборкой?

В настоящее время я работаю с событиями до и после сборки в VS2010, пытаясь получить номер версии SVN в файле AssemblyInfo.cs и, следовательно, скомпилировать его в мою сборку DLL.

В предварительной сборке я запускаю скрипт, который обновляет файл AssemblyInfo.cs, а на этапе после сборки я запускаю скрипт, чтобы сбросить его на ноль.

Я хочу сделать это, потому что если я оставлю последнюю версию, то SVN увидит это как изменение, которое будет зафиксировано, что обновит номер версии SVN и, следовательно, приведет к другому изменению; это становится своего рода рекурсивным.

Проблема, с которой я столкнулся, заключается в том, что сборка выбирает исходную версию файла, а не ту, которая была обновлена ​​на этапе предварительной сборки.

Следовательно:

Если (в качестве теста) я вручную установил номер версии в файле:

[assembly:AssemblyVersion("1.0.0.123")]

Затем предварительная сборка обновляет его до:

[assembly: AssemblyVersion("1.0.0.456")]

Затем пост-билд обновляет его до:

[assembly: AssemblyVersion("1.0.0.0")]

И когда я смотрю на dll, который собирается, версия 1.0.0.123

Я проверил, что шаг перед сборкой завершается до того, как начнется сборка - но даже если я заставлю себя долго ждать (вызывая notepad.exe или что-то еще), VS2010 все равно не сможет подобрать обновленный файл.

Вы можете увидеть это поведение, просто добавив notepad.exe в команду pre-build - тогда, когда блокнот работает; перейдите и измените файл AssemblyInfo.cs вручную. Сборка не начнется, пока вы не закроете блокнот - но как только вы закроете блокнот, он будет построен с оригинальной версией файла.

Я что-то здесь упускаю из-за того, что предварительная сборка должна работать? Есть ли способ заставить сборку поднять и использовать обновленный файл?

Любые подсказки приветствуются:)

1 ответ

Решение

Оказывается, что если оставить компьютер выключенным на пару дней и вернуться к нему, то это решит проблему...
Я полагаю, перезагрузки компьютера было бы достаточно, чтобы расшатать его. Возвращается к: Вы пытались выключить и снова включить. вздох

Другие вопросы по тегам