【问题标题】:PowerShell Syntax ErrorPowerShell 语法错误
【发布时间】:2013-08-27 00:36:51
【问题描述】:

我正在开发一个将创建 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 的新手。任何指导和 帮助将不胜感激

【问题讨论】:

  • 您是否收到任何错误和/或输出?
  • 我只指出我在问题中有问题的代码。当我运行完整的脚本时,它会为我创建构建定义文件。但是“要构建的项目”和“要构建的项目”等流程信息是空的,并且在执行时,它不会对我抛出任何错误。我想,我可能写错了 powershell 语法。

标签: powershell tfs tfsbuild


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的帮助。作为一个新手,我不知道如何在 powershell 中调用构造函数。现在我知道该怎么做了,我能够解决我的问题。
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多