簡體   English   中英

通過PowerShell腳本在Visual Studio中打開VSTFS鏈接

[英]Open VSTFS Link in Visual Studio by PowerShell Script

我嘗試通過PowerShell腳本在VisualStudio中打開成功構建的詳細信息頁面。 我可以連接到我的測試項目和某個Builddefinition的集合。 每個構建版本都有一個vstfs-Link,但是如何在Visual Studio中打開此鏈接? 我嘗試使用EncodeUri,GetArtifactUrl和GetArtifactUrlExternal。 對於GetArtifactUrl,我收到此錯誤:

無法將“ GetArtifactUrl”的值“ vstfs:/// Build / Build / 12345”的參數“ artId”轉換為類型“ Microsoft.TeamFoundation.ArtifactId”:“無法轉換“ 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
}

首先,要在Visual Studio中打開構建詳細信息,只需將$build.Uriurl參數結合使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM