【问题标题】:Convert C# logic to powershell for TFS将 C# 逻辑转换为 TFS 的 powershell
【发布时间】:2013-08-23 07:53:28
【问题描述】:

我有一个 C# 程序,它为我构建了一个 TFS 构建定义。我想在 powershell 脚本中执行相同的代码。到目前为止,我已经能够编写脚本,它将在 TFS 中为我​​创建一个新的构建定义。但是,我在设置构建定义的流程部分时遇到了麻烦。我需要将 C# 中的以下代码转换为 powershell,我所做的所有尝试都不起作用。

//Set process parameters 
var process = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters);
//Set BuildSettings properties 
BuildSettings settings = new BuildSettings();
settings.ProjectsToBuild = new StringList("$/Templates/Main/Service/application1"); 
settings.PlatformConfigurations = new PlatformConfigurationList(); 
settings.PlatformConfigurations.Add(new PlatformConfiguration("Any CPU", "Debug"));
process.Add("BuildSettings", settings);

buildDefinition.ProcessParameters = WorkflowHelpers.SerializeProcessParameters(process); 

首先我加载了使用 TFS 所需的程序集。当我想复制相同的 C# 代码时,

var process = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters); 

我在 PowerShell 中进行了跟踪

$process = New-Object Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers. 

上面给了我一个错误,说“找不到构造函数。找不到类型 Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers 的合适构造函数”

我检查过,没有构造函数。我的问题是我在编写 PowerShell 脚本以实现与 c# 代码相同的功能时做错了什么。我确信这是我正在做的语法错误并且不知道在 PowerShell 中执行此操作的正确方法。

【问题讨论】:

  • 请不要只要求我们为您解决问题。向我们展示如何尝试自己解决问题,然后向我们确切地展示结果是什么,并告诉我们您为什么觉得它不起作用。请参阅“What Have You Tried?”了解您真正需要阅读的优秀文章。
  • 是的,我应该问我做了什么以及我得到了什么错误的问题。我已经编辑了问题

标签: powershell tfs tfsbuild


【解决方案1】:

从您的代码 sn-p(并通过 MSDN 确认)中可以看出,DeserializeProcessParametersWorkflowHelpers 类的静态方法。您需要在 PowerShell 中使用以下语法调用它:

$process = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($buildDefinition.ProcessParameters)

看起来 buildDefinition 变量是之前声明的——所以我只是在它上面加上了一个 $ 字符,使它成为一个合法的 PowerShell 变量。与过程变量相同。我希望这会有所帮助!

【讨论】:

  • 非常感谢。我不知道 PowerShell 中调用它的语法。我之前声明了 buildDefinition 变量。我能够使用您的语法运行该过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2019-10-29
  • 2018-01-12
  • 1970-01-01
  • 2019-12-10
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多