Номер сборки MSBuild TFS
Я использую SVN уже некоторое время. недавно в проекте я использую TFS. В сборках мне нравится добавлять / обновлять номер версии сборки в выходных данных проекта. Я делаю это на главной странице, чтобы это было ясно видно в приложении. Поскольку приложение может работать на нескольких машинах, это полезная информация о том, какая версия работает.
Я достигаю этого в мире SVN как:
<!-- Import of the MSBuildCommunityTask targets -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<!-- to AssemblyInfo to include svn revision number -->
<Target Name="BeforeBuild">
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(ProgramFiles)\CollabNet Subversion Client">
<Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>
<Time>
<Output TaskParameter="Year" PropertyName="Year" />
<Output TaskParameter="Month" PropertyName="Month" />
<Output TaskParameter="Day" PropertyName="Day" />
</Time>
<FileUpdate Files="MasterPage.master" Regex="svn revision: (\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="svn revision: $(Year).$(Month).$(Day).$(Revision)" />
</Target>
Как вы можете видеть выше, задача "BeforeBuild" обновляет файл masterPage.master с отметкой YYYY.MM.DD.SVNVERSION.
Как я могу добиться этого с TFS в качестве источника контроля. Как получить номер сборки TFS?
1 ответ
Предполагая, что вы имеете в виду Team Build, свойство $(BuildNumber) содержит текущий номер сборки.
См. http://blogs.msdn.com/aaronhallberg/archive/2008/02/12/team-build-2008-property-reference.aspx для получения полной ссылки на доступные свойства.
Если вы просто запускаете MSBuild, я не верю, что он генерирует / применяет общий номер сборки (каждый проект будет иметь отдельный, возможно, автоматически увеличенный номер версии в своем файле AssemblyInfo.cs [по умолчанию]). Вы можете динамически получить этот номер версии для конкретной сборки, используя класс System.Reflection.Assembly во время выполнения.
Обновить
Начиная с TFS 2010, переменная 'BuildNumber' больше не передается в процесс MSBuild TFS. TFS 2010 теперь использует Windows Workflow в качестве внутреннего механизма сборки, поэтому, если вам нужен номер сборки, вам придется изменить определение сборки, чтобы включить его, как упоминалось в этой статье MSDN.