kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

TFSビルドサービスでマッピングの競合が発生する状態を解決する

TFSのビルドサービスでビルドするとこんなエラーが出ることがあります。

例外メッセージ: マッピングの競合のため、ワークスペース '3_1_patraqushie' を作成できません。古いワークスペースを手動で削除しなければならない場合があります。コンピューター上のワークスペースの一覧を取得するには、コマンド 'tf workspaces /computer:%COMPUTERNAME%' を使用します。
詳細: パス d:\Builds\1\private\WebAutoBuild\src は、既にワークスペース 2_1_patraqushie 内でマップされています。 (種類 MappingConflictException)
例外スタック トレース: 場所 Microsoft.TeamFoundation.Build.Workflow.Activities.TfCreateWorkspace.Execute(CodeActivityContext context)
場所 System.Activities.CodeActivity`1.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
場所 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

内部例外の詳細:

例外メッセージ: パス d:\Builds\1\private\WebAutoBuild\src は、既にワークスペース 2_1_patraqushie 内でマップされています。 (種類 MappingConflictException)
例外スタック トレース: 場所 Microsoft.TeamFoundation.VersionControl.Client.InternalCache.CheckForMappingConflicts(WorkspaceInfo workspaceToCheck, WorkspaceInfo workspaceToIgnore)
場所 Microsoft.TeamFoundation.VersionControl.Client.Client.CreateWorkspace(CreateWorkspaceParameters cwp)
場所 Microsoft.TeamFoundation.Build.Client.BuildClientUtil.CreateWorkspace(VersionControlServer versionControl, String name, IEnumerable`1 folders, String comment, IEnumerable`1 wsSecurity)
場所 Microsoft.TeamFoundation.Build.Workflow.Activities.TfCreateWorkspace.Execute(CodeActivityContext context)

サーバー側でマッピングが競合しているためなのですが、解決するにはビルドサービスが使う、サーバー側のワークスペースを削除します。クライアントでVS2012の開発者コマンドプロンプトを起動します(環境変数PATHが必要なところに設定されているので便利です)。
TFS側にはtfコマンドが入っていないので、クライアントで行います。

tf workspaces /collection:Webアクセス用のURL /owner:*

tfコマンドにはworkspaceとworkspacesと二つオプションがあるので気を付けてください。

こんな風に所有者tfsadmin(このサーバーでのビルドサービス実行用アカウントです)複数のワークスペースがマップされているはずです。今回は両方とも削除してしまいましょう。

削除するとこのエラーは消えてビルドができるようになります。