С помощью TFS 2015 обновления 2, агент был установлен в машине, агент создает свое рабочее пространство:Microsoft.TeamFoundation.VersionControl.Client.ItemNotMappedException даже тогда, когда рабочее пространство существует и имеет отображение
Некоторые пользовательские задачи MSBuild, разработанные InHouse, были реализованы в определении сборки, которое будет выполняться на агенте. Эти задачи выполняют некоторые операции с сервером TFS.
Когда определение сборки в очереди для нового строительства здесь является то, что я получил:
В строительной машине я исхожу запустить следующий сценарий, чтобы проверить наличие рабочего пространства :
# Script to find a Team Foundation workspace
param(
[string] $workspaceHint = $(get-location).Path
)
begin
{
# load the needed client dll's
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client")
# fetches a Workspace instance matching the WorkspaceInfo found in the cache file
function getWorkspaceFromWorkspaceInfo($wsInfo)
{
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($wsInfo.ServerUri.AbsoluteUri)
$vcs = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
$vcs.GetWorkspace($wsInfo)
# TODO: likely add some convenience properties/methods for easier scripting support
}
}
process
{
# is there only 1 workspace in our cache file? If so, use that one regardless of the hint
$workspaceInfos = [Microsoft.TeamFoundation.VersionControl.Client.Workstation]::Current.GetAllLocalWorkspaceInfo()
if ($workspaceInfos.Length -eq 1)
{
return getWorkspaceFromWorkspaceInfo($workspaceInfos[0])
}
if (test-path $workspaceHint)
{
# workspace hint is a local path, get potential matches based on path
$workspaceInfos = [Microsoft.TeamFoundation.VersionControl.Client.Workstation]::Current.GetLocalWorkspaceInfoRecursively($workspaceHint)
}
else
{
# workspace hint is NOT a local path, get potential matches based on name
$workspaceInfos = @($workspaceInfos | ?{ $_.name -match $workspaceHint })
}
if ($workspaceInfos.Length -gt 1)
{
throw 'More than one workspace matches the workspace hint "{0}": {1}' -f
$workspaceHint, [string]::join(', ', @($workspaceInfos | %{ $_.Name}))
}
elseif ($workspaceInfos.Length -eq 1)
{
return getWorkspaceFromWorkspaceInfo($workspaceInfos[0])
}
else
{
throw "Could not figure out a workspace based on hint $workspaceHint"
}
}
Сценарий не может найти никакого рабочего пространства.
Затем TFS 2015 электроинструменты были установлены с его команды Powershell в машине и запустить следующий сценарий:
if ((Get-PSSnapin -Name Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin -Name Microsoft.TeamFoundation.PowerShell
}
$ws = Get-TfsWorkspace -Path C:\t\1\s
$ws.Folders
Отображение рабочего пространства и элементы отображаются.
Очередь новых сборок, продолжайте показывать ту же ошибку. Рабочее пространство является общедоступным сервером, и после некоторого древнего сообщения в форумах msdn я очищаю кеш TFS в машине.
Любая подсказка, как заставить Microsoft.TeamFoundation.VersionControl.Client распознавать рабочее пространство?
ошибки говорит, что нет никакого отображения рабочей папки «C: \ т \-\ s», вы проверили на ваш агенте построения, если там какие-либо рабочие создали на нем? Кажется, что нет рабочего пространства, которое отображает путь «C: \ t \ 1 \ s». Сначала проверьте, имеет ли сервер агента сборки какие-либо рабочие области (вы можете запустить команду tf workspaces на машине агента сборки). Затем проверьте каждую рабочую область, если есть сопоставления о «C: \ t \ 1 \ s». Вы можете использовать команду tf workfold для проверки сопоставлений каждой рабочей области. –
Спасибо за ваши комментарии, я знаю, что мой пост - TL; DR. Но, как я заявляю в сообщении: было создано рабочее пространство, а также его отображение. – XtianGIS
Вы проверили код на сервере агента сборки вручную, не используя TFS? Если все еще не удается получить это рабочее пространство. Не могли бы вы попытаться использовать vcs.GetWorkspace (string localPath) этот метод, чтобы получить это рабочее пространство без использования информации о рабочем пространстве. –