0

我正在尝试创建一个 PS 脚本来创建 TFS 构建定义文件。我找到了下面的例子。但是,它不能正常工作。我尝试按照示例创建脚本,但没有成功。任何有助于确定以下脚本为何不起作用的帮助,以及如何创建 PS 脚本或示例的指导,我们将不胜感激

param(
             [Parameter(Mandatory=$true)]
             [string] $buildName,
        [string] $serverName="http://tfs:80/",
        [string] $teamProject="MyProject"
)

# VS 2010
# $tfsClientVersion = ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
# VS 2008
$tfsClientVersion = ", Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

[void][System.Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client"+$tfsClientVersion)
[void][System.Reflection.Assembly]::Load("Microsoft.TeamFoundation.Build.Client"+$tfsClientVersion)
[void][System.Reflection.Assembly]::Load("Microsoft.TeamFoundation.VersionControl.Client"+$tfsClientVersion)

$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName) 
$versionControl = $tfs.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]) 
$buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])

$def = $buildserver.CreateBuildDefinition($teamProject)
$def.Name = "$buildName"
$def.Description = "Created by Powershell script "
$agentSpec = $buildServer.CreateBuildAgentSpec($teamProject)
$agentSpec.Name = "build"
$agent = $buildServer.QueryBuildAgents($agentSpec).Agents[0]
$def.DefaultBuildAgent = $agent
$def.DefaultDropLocation = "\\build\PrivateDrops"
$def.RetentionPolicies.Item('Failed').NumberToKeep = 5
$def.RetentionPolicies.Item('Stopped').NumberToKeep = 0 #None
$def.RetentionPolicies.Item('PartiallySucceeded').NumberToKeep = 5
$def.RetentionPolicies.Item('Succeeded').NumberToKeep = 5
$def.Save()
4

1 回答 1

0

您似乎尝试使用 2008 汇编和方法在 tfs 2010 上创建构建定义,但没有提供输出或错误很难说出确切的问题,但几乎没有什么突出的:

  • 使用与您的 tfs 服务器匹配的程序集版本(当您标记问题 tfs2010 时)
  • 对于 2010 年,建议使用 api 的方法是从 uri 创建 TfsTeamProjectCollection 对象,从那里您将像现在一样使用 get 服务。
  • 您的代码建议适用于 2008 年,2010 年 tfs 构建的工作方式发生了重大变化,特别是 DefaultBuildAgent 属性已过时且未使用,代理由构建控制器分配,作为脚本的参考。

http://geekswithblogs.net/jakob/archive/2010/04/26/creating-a-build-definition-using-the-tfs-2010-api.aspx

于 2013-08-16T10:19:32.173 回答