Переопределить, где ярлык создан MSBuild в TFS 2008/2010 - PullRequest
0 голосов
/ 03 марта 2011

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

В принципе, я хотел бы, чтобы ярлык создавался в корне Team Project (т.е. папка «Клиент» ниже), однако, похоже, что ярлык создан в корне рабочая папка для рабочих пространств (т. е. Project 1 \ Development \ Sources):

$                     <-- Project Collection
+- Client             <-- Team Project
  +- Project 1        <-- Project
    +- Deployments    <-- Assets for a deployment
      +- 1.0.0.0
      +- 1.1.0.0
    +- Development    <-- Development Branch
      +- Source       <-- Dev Build Definition working folder mapped here.
    +- Environment    <-- Scripts, etc. for deployments.
    +- Main           <-- Main Branch
      +- Source       <-- Release Build Definition working folder mapped here.

В определениях сборки мы указали «Рабочую папку» в рабочей области на уровне папки «Исходный» для разработки или Main в зависимости от типа сборки.

Глядя на журналы сборки, похоже, что метка должна быть создана на уровне клиента:

Task "Label" (TaskId:42)
  Label TeamFoundationServerUrl="http://TFSServer:8080/tfs/DefaultCollection"
        BuildUri="vstfs:///Build/Build/4538" 
        Name="Nightly_20110303.5" 
        Scope="$/Client" 
        Recursive=True 
        Comments="Version-1.0.0.0 Requested-xxx Get-T Branch-Development"
        Version="WCATQCDEV-BLD_35_8"
        Child="Replace"
        Files="$/" (TaskId:42)
  Label Nightly_20110303.5@$/Client (version WCATQCDEV-BLD_35_8) was successfully created. (TaskId:42)

Однако, даже если для Files установлено значение $/, метка все еще создается на уровне рабочей папки. Согласно документации, параметр Files должен указывать, какие файлы включены в метку, но, очевидно, он работает не совсем так, как нам хотелось бы.

Я успешно изменил комментарий, созданный с помощью задачи BeforeLabel, установив свойство LabelComment, однако попытка установить для свойства LabelFiles в той же задаче что-то вроде $/Client не похоже чтобы повлиять на местоположение, в котором создается метка, и, похоже, в конечном итоге искажается до %26/Client в журнале при вызове метода метки.

1 Ответ

2 голосов
/ 05 марта 2011

Метка будет создана для Папки управления исходным кодом, указанной на вкладке рабочей области данного конкретного типа сборки.

Если вы указываете «Разработка» в качестве Папки контроля источника в Типе сборки, тогда будет создана только Меткадля файлов в папке «Разработка».

Метка идентифицируется не только по имени, но и по так называемой «области действия», где область действия - это фактический путь, в котором имя метки является уникальным.

Если ваша область ярлыка "$ / project", то имя ярлыка уникально в Project;и когда область действия - "$ / Project / Development", имя метки является уникальным в пределах Development.

Scope = "$ / Client"

Над записью в вашем журналеfile не означает, что он создает метку для файлов в $ / Client, но на самом деле это означает, что созданная метка уникальна в $ / Client.

Область действия также позволяет пользователям создавать несколько меток с одним именем в пределахтот же проект.Например: две метки с одинаковым именем «Test» могут быть созданы для разных областей в одном проекте («$ / project» и «$ / Project / Development»).

...