私が使用するソリューションは、上記と非常によく似ています。ビルド定義でマッピングを作成するときに、CI ビルドをトリガーしたくないフォルダーをクロークします。次に、ワークフローで、CreateWorkspace アクションの直後にクロークを削除するカスタム アクティビティを追加します。クロークを削除すると、それらのフォルダー内のすべてのソースをビルドに使用できるようになります。
これにより、ビルド定義からすべてを管理できるようになり、CI ビルドをトリガーするフォルダーや、ビルドに使用できる必要があるフォルダーを変更する必要がある場合でも、ワークフローを変更する必要はありません。
ワークスペース マッピングの複雑さによっては、これがうまくいく場合があります。
アクティビティのコードは次のとおりです。
using System.Activities;
using System.Linq;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
[BuildActivity(HostEnvironmentOption.All)]
public sealed class RemoveCloaksFromWorkspace : CodeActivity
{
[RequiredArgument]
public InArgument<Workspace> Workspace { get; set; }
protected override void Execute(CodeActivityContext context)
{
var ws = this.Workspace.Get(context);
ws.Folders.Where(f => f.IsCloaked).ToList().ForEach(f => ws.DeleteMapping(f));
}
}