2015-05-04 3 views
1

Я пытаюсь открыть страницу подробных сведений об успешной сборке в VisualStudio с помощью сценария PowerShell. Я могу подключиться к коллекции моего тестового проекта и некоторого Builddefinition. Я получил vstfs-Link для каждой сборки, но как я могу открыть эту ссылку в Visual Studio? Я попытался использовать EncodeUri, GetArtifactUrl и GetArtifactUrlExternal. Для GetArtifactUrl я получил эту ошибку:Открыть ссылку VSTFS в Visual Studio с помощью скрипта PowerShell

Невозможно преобразовать аргумент «artId» со значением: «vstfs: /// Build/Build/12345», для «GetArtifactUrl» введите «Microsoft.TeamFoundation.ArtifactId»: «Can not преобразуйте значение «vstfs: /// Build/Build/12345» типа «System.Uri» на тип «Microsoft.TeamFoundation.ArtifactId». "

Может ли кто-нибудь дать мне совет, как преобразовать ссылку vstfs в нечто, что я могу открыть в VisualStudio?

Благодаря

[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.VersionControl.Client") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Common") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualStudio.TeamFoundation") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualStudio.TeamFoundation.Client") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualStudio.TeamFoundation.VersionControl") 

$uri = [URI]"http://MyServer:8080/tfs/DefaultCollection" 
$project = "MyProject" 
$buildDefinition = "MyBuildDefinition" 

# CONNECT 
$collection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($uri) 

# BUILDS 
$buildServer = $collection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) 
$buildSpec = $buildServer.CreateBuildDetailSpec($project, $buildDefinition) 

$ILinkingService = $collection.GetService([Microsoft.Teamfoundation.ILinking]) 
$CommonService = $collection.GetService([Microsoft.TeamFoundation.Common]) 

# QUERY 
$buildSpec.InformationTypes = $null 
$buildSpec.MaxBuildsPerDefinition = 5 
$buildSpec.QueryOrder = [Microsoft.TeamFoundation.Build.Client.BuildQueryOrder]::FinishTimeDescending 
$results = $buildServer.QueryBuilds($buildSpec) 

foreach($build in $results.Builds) 
{ 
    Write-Host $build.Status 
    #$testUrl = $ILinkingService.GetArtifactUrl($build.Uri) 
    $testUrl = $CommonService.EncodeUri($build.Uri) 
    Write-Host $testUrl 
} 

ответ

0

Прежде всего, чтобы открыть строить детали в Visual Studio, вы можете просто использовать $build.Uri в связи с url парами:

$testUrl = $build.Uri.AbsoluteUri + "?url=" + $uri.AbsoluteUri 


Если вы хотите, чтобы открыть в деталях вы можете использовать ILinking.GetArtifactUrl, но при этом должна быть явно указана перегрузка:

$testUrl = $ILinkingService.GetArtifactUrl([string] $build.Uri) 

Может быть, даже лучше использовать TswaClientHyperlinkService:

$waLinkingService = $collection.GetService([Microsoft.TeamFoundation.Client.TswaClientHyperlinkService]) 
... 
$waLinkingService.GetViewBuildDetailsUrl($build.Uri)