3

TFS ビルド定義を作成する C# プログラムがあります。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); 

最初に、TFS で作業するために必要なアセンブリをロードしました。同じ C# コードをレプリケートしたい場合は、

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

PowerShellで次のことを行いました

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

上記で、「コンストラクターが見つかりません。Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers 型の適切なコンストラクターが見つかりません」というエラーが表示されました。

確認しましたが、そのためのコンストラクターはありません。私の質問は、C# コードと同じ機能を実現するために PowerShell スクリプトを作成する際に、私が何を間違っているのかということです。私がやっているのは構文エラーであり、PowerShellでそれを行う正しい方法を認識していないと確信しています。

4

1 に答える 1

5

コード スニペット (およびMSDNで確認) から、クラスDeserializeProcessParametersの静的メソッドであることがわかります。WorkflowHelpersPowerShell で次の構文を使用して呼び出す必要があります。

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

buildDefinition 変数が以前に宣言されているように見えるので、$ 文字を貼り付けて、正当な PowerShell 変数にしました。プロセス変数と同じこと。これが役立つことを願っています!

于 2013-08-22T23:53:28.793 に答える