将C#逻辑转换为TFS的powershell

use*_*380 3 powershell tfs tfsbuild

我有一个C#程序,它构建了一个TFS构建定义.我想在PowerShell脚本中执行相同的代码.到目前为止,我已经能够编写脚本代码,它将在TFS中创建一个新的构建定义.但是,我在设置构建定义的Process部分时遇到问题.我需要将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); 
Run Code Online (Sandbox Code Playgroud)

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

var process = WorkflowHelpers.DeserializeProcessParameters(buildDefinition.ProcessParameters); 
Run Code Online (Sandbox Code Playgroud)

我在PowerShell中做了以下操作

$process = New-Object Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers. 
Run Code Online (Sandbox Code Playgroud)

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

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

Goy*_*uix 5

它将从您的代码片段(并通过MSDN确认)中显示DeserializeProcessParametersWorkflowHelpers该类的静态方法.您需要在PowerShell中使用以下语法调用它:

$process = [Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers]::DeserializeProcessParameters($buildDefinition.ProcessParameters)
Run Code Online (Sandbox Code Playgroud)

看起来buildDefinition变量是先前声明的 - 所以我只是在它上面加了一个$字符使它成为一个合法的PowerShell变量.流程变量也是如此.我希望这有帮助!