0

我正在开发一个将创建 TFS 构建定义的 powershell 脚本。我用下面的例子作为我的起点。

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

我在 powershell 中完成了脚本,它在 TFS 中为我​​创建了一个构建定义文件。我坚持的一件事是创建流程信息,例如“要构建的项目”和“要构建的项目”。下面给出了 C# 代码

//Set process parameters 
varprocess = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters); 

//Set BuildSettings properties 
BuildSettings settings = newBuildSettings(); 
settings.ProjectsToBuild = newStringList("$/pathToProject/project.sln"); 
settings.PlatformConfigurations = newPlatformConfigurationList(); 
settings.PlatformConfigurations.Add(newPlatformConfiguration("Any CPU", "Debug")); 
process.Add("BuildSettings", settings); 

buildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process);

下面是我在上面编写的 powershell 代码。

Write-Host"Set process parameters "$now
$process=[Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($def.ProcessParameters)
Write-Host"Set build settings properties "$now
$settings=new-object-`enter code here`TypeNameMicrosoft.TeamFoundation.Build.Workflow.Activities.BuildSettings
$sList=New-Object-TypeNameMicrosoft.TeamFoundation.Build.Workflow.Activities.StringList
$sList="$/pathToProject/project.sln"
$settings.ProjectsToBuild =$sList
$process.Add("BuildSettings", $sList)

但是上面的代码段并没有在我的构建定义文件中创建构建设置。我的问题是我在 powershell 中以正确的方式执行此操作吗?我觉得我没有错误地编写 powershell 代码,因为我是 powershell 的新手。任何指导和帮助将不胜感激

4

1 回答 1

0

在 PowerShell 中调用带参数的构造函数应该是这样的:

$ns = 'Microsoft.TeamFoundation.Build.Workflow.Activities'
$settings.ProjectsToBuild = new-object "$ns.StringList" '$/pathToProject/project.sln'

还要注意在 TF 服务器路径周围使用单引号。 $is PowerShell 中的特殊字符 - 告诉它后面的内容是变量名或子表达式,即使在字符串中也是如此。除非该字符串是单引号。在这种情况下,PowerShell 不会解释字符串中的任何特殊字符。

于 2013-08-26T16:36:51.643 回答