В настоящее время я работаю с событиями до и после сборки в VS2010, пытаясь получить свой номер версии SVN в файле AssemblyInfo.cs и, следовательно, скомпилировать его в мою сборку dll.
В доbuild Я запускаю скрипт, который обновляет файл 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 - тогда во время работы notepad;перейдите и измените файл AssemblyInfo.cs вручную.Сборка не начнется, пока вы не закроете блокнот - но как только вы закроете блокнот, он будет построен с исходной версией файла.
Я что-то упустил здесь так, как предполагалось до сборкиРабота?Есть ли способ заставить сборку взять и использовать обновленный файл?
Любые подсказки приветствуются:)