0

既定では、キューに入れられたビルドが実行されている場合、MSBuild は CoreLabel タスクを呼び出して、ビルドに含まれていたソース ファイルにラベルを付けます。このラベルが作成される場所を制御するにはどうすればよいですか?

基本的に、ラベルをチーム プロジェクトのルート (つまり、以下の "Client" フォルダー) に作成したいのですが、ワークスペースの作業フォルダーのルート(つまり、Project 1\Development ) にラベルが作成されているようです。\ソース):

$                     <-- 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.

ビルド定義内で、ビルド タイプに応じて開発またはメインの「ソース」フォルダー レベルでワークスペースに「作業フォルダー」を指定しました。

ビルド ログを見ると、ラベルはクライアント レベルで作成する必要があるようです。

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に設定しようとしても、ラベルが作成された場所に影響を与えないようで、終了するようですLabel メソッドを呼び出すと、ログに記録されます。LabelFiles$/Client%26/Client

4

1 に答える 1

2

その特定のビルド タイプのワークスペース タブで指定されたソース管理フォルダーのラベルが作成されます。

Build Type の Source Control Folder に "Development" を指定している場合、Label は "Development" フォルダー配下のファイルに対してのみ作成されます。

ラベルは、名前だけでなく、いわゆる「スコープ」によっても識別されます。スコープは、ラベル名が一意である実際のパスです。

ラベル スコープが「$/project」の場合、ラベル名は Project 内で一意です。スコープが「$/Project/Development」の場合、ラベル名は Development 内で一意です。

Scope="$/クライアント"

上記のログ ファイルのエントリは、$/Client の下にあるファイルのラベルを作成していることを意味するのではなく、作成されたラベルが $/Client 内で一意であることを意味します。

スコープにより、ユーザーは同じプロジェクト内で同じ名前の複数のラベルを作成することもできます。例: 同じプロジェクト (「$/project」および「$/Project/Development」) 内の異なるスコープに対して、「Test」という同じ名前の 2 つのラベルを作成できます。

于 2011-03-05T08:32:56.217 に答える