【发布时间】:2015-07-21 18:12:27
【问题描述】:
有没有办法使用 Powershell 对 Visual Studio Online“构建定义”(与“XAML 定义”)进行排队。
我有以下脚本:
#// CONFIGURATION ITEMS ============================================
$serverName="https://example.visualstudio.com/DefaultCollection"
$username = "example@example.com"
$password = "mypassword";
$teamProject = "Web"
$buildDefinition = "Test"
#// ================================================================
[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.WorkItemTracking.Client")
$assembly = ("Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$source = @"
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using System.Net;
public class ConnectByImplementingCredentialsProvider : ICredentialsProvider
{
public ICredentials GetCredentials(Uri uri, ICredentials iCredentials)
{
return new NetworkCredential(" $username ", " $password ");
}
public void NotifyCredentialsAuthenticated(Uri uri)
{
throw new ApplicationException("Unable to authenticate");
}
}
"@
Add-Type -ReferencedAssemblies $assembly -TypeDefinition $source -Language CSharp
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName, (New-Object ConnectByImplementingCredentialsProvider))
$tfs.EnsureAuthenticated()
$buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$definition = $buildserver.GetBuildDefinition($teamProject, $buildDefinition)
$request = $definition.CreateBuildRequest()
$buildserver.QueueBuild($request, "None")
...但GetBuildDefinition() 仅返回 XAML 定义下列出的项目。 :-(
【问题讨论】:
标签: powershell tfsbuild azure-devops