简体   繁体   English

通过PowerShell脚本在Visual Studio中打开VSTFS链接

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

I try to open a detail page of a successfull build in VisualStudio by a PowerShell script. 我尝试通过PowerShell脚本在VisualStudio中打开成功构建的详细信息页面。 I am able to connect to the collection of my test project and a certain Builddefinition. 我可以连接到我的测试项目和某个Builddefinition的集合。 I got a vstfs-Link for every build but how can I open this link in Visual Studio? 每个构建版本都有一个vstfs-Link,但是如何在Visual Studio中打开此链接? I tried to use EncodeUri, GetArtifactUrl and GetArtifactUrlExternal. 我尝试使用EncodeUri,GetArtifactUrl和GetArtifactUrlExternal。 For GetArtifactUrl I got this error: 对于GetArtifactUrl,我收到此错误:

Cannot convert argument "artId", with value: "vstfs:///Build/Build/12345", for "GetArtifactUrl" to type "Microsoft.TeamFoundation.ArtifactId": "Cannot convert the "vstfs:///Build/Build/12345" value of type "System.Uri" to type "Microsoft.TeamFoundation.ArtifactId"." 无法将“ GetArtifactUrl”的值“ vstfs:/// Build / Build / 12345”的参数“ artId”转换为类型“ Microsoft.TeamFoundation.ArtifactId”:“无法转换“ vstfs:/// Build / Build” “ / 12345”类型的值“ System.Uri”键入“ Microsoft.TeamFoundation.ArtifactId”。

Can anyone give me some advice how to convert a vstfs link to something that I can open in VisualStudio? 谁能给我一些建议,如何将vstfs链接转换为我可以在VisualStudio中打开的内容?

Thanks 谢谢

[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
}

First of all, to open build details in Visual Studio, you can just use $build.Uri in connection with url param: 首先,要在Visual Studio中打开构建详细信息,只需将$build.Uriurl参数结合使用:

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


If you want to open the build details in a browser, you can use ILinking.GetArtifactUrl , but must specify the overload explicitly: 如果要在浏览器中打开构建详细信息,可以使用ILinking.GetArtifactUrl ,但必须明确指定重载:

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

Perhaps even better is to use TswaClientHyperlinkService : 也许更好的方法是使用TswaClientHyperlinkService

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我可以使用vstfs://协议在Visual Studio中执行哪些类型的操作? - What types of actions can I perform in Visual Studio using the vstfs:// protocol? PowerShell脚本构建Visual Studio项目 - PowerShell Script To build Visual Studio Project 在 Visual Studio 中的目录符号链接中打开解决方案 - Open solution in a directory symbolic link in Visual Studio vstfs://协议尝试在VS 2012中打开但失败 - vstfs:// protocol tries to open in VS 2012 but fails Powershell EnvDTE切换Visual Studio会话(已打开多个单独的解决方案) - Powershell EnvDTE Switch Visual Studio Session (Multiple Separate Solutions open) 从 Visual Studio 打开命令提示符而不是 Powershell 来执行 python - Open command prompt from Visual Studio instead of Powershell for python execution Visual Studio 2019-使用PowerShell打开文件而不是解决方案资源管理器 - Visual Studio 2019 - Use PowerShell to open files instead of Solution Explorer 如何检查在Visual Studio中运行Powershell脚本的时间 - How to check when a powershell script is done running with Visual Studio Visual Studio 2017 C#启动Powershell脚本 - Visual Studio 2017 C# launching powershell script 由于执行策略,Visual Studio 无法执行 Powershell 脚本 - Visual Studio can't execute a Powershell script due to execution policy
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM