Номер сборки 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.

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