Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[error]Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again. #2

Closed
dipenpatelOEH opened this issue Jun 30, 2017 · 8 comments

Comments

@dipenpatelOEH
Copy link

Hi I am getting above error.

I have added this task as last item in the release pipeline.

Here is log

2017-06-30T03:06:08.3880037Z ##[debug]Importing function 'Assert-Path'.

2017-06-30T03:06:08.3880037Z ##[debug]Importing function 'Find-Files'.

2017-06-30T03:06:08.3890038Z ##[debug]Importing function 'Find-Match'.

2017-06-30T03:06:08.3900039Z ##[debug]Importing function 'Get-AssemblyReference'.

2017-06-30T03:06:08.3910040Z ##[debug]Importing function 'Get-Endpoint'.

2017-06-30T03:06:08.3920041Z ##[debug]Importing function 'Get-Input'.

2017-06-30T03:06:08.3930042Z ##[debug]Importing function 'Get-LocString'.

2017-06-30T03:06:08.3940043Z ##[debug]Importing function 'Get-TaskVariable'.

2017-06-30T03:06:08.3950044Z ##[debug]Importing function 'Get-TaskVariableInfo'.

2017-06-30T03:06:08.3970046Z ##[debug]Importing function 'Get-TfsClientCredentials'.

2017-06-30T03:06:08.3980047Z ##[debug]Importing function 'Get-TfsService'.

2017-06-30T03:06:08.3990048Z ##[debug]Importing function 'Get-VssCredentials'.

2017-06-30T03:06:08.4010050Z ##[debug]Importing function 'Get-VssHttpClient'.

2017-06-30T03:06:08.4020051Z ##[debug]Importing function 'Import-LocStrings'.

2017-06-30T03:06:08.4030052Z ##[debug]Importing function 'Invoke-Tool'.

2017-06-30T03:06:08.4040053Z ##[debug]Importing function 'New-FindOptions'.

2017-06-30T03:06:08.4050054Z ##[debug]Importing function 'New-MatchOptions'.

2017-06-30T03:06:08.4060055Z ##[debug]Importing function 'Out-Default'.

2017-06-30T03:06:08.4070056Z ##[debug]Importing function 'Select-Match'.

2017-06-30T03:06:08.4080057Z ##[debug]Importing function 'Set-TaskVariable'.

2017-06-30T03:06:08.4090058Z ##[debug]Importing function 'Trace-EnteringInvocation'.

2017-06-30T03:06:08.4100059Z ##[debug]Importing function 'Trace-LeavingInvocation'.

2017-06-30T03:06:08.4120061Z ##[debug]Importing function 'Trace-Path'.

2017-06-30T03:06:08.4120061Z ##[debug]Importing function 'Write-AddAttachment'.

2017-06-30T03:06:08.4140063Z ##[debug]Importing function 'Write-AddBuildTag'.

2017-06-30T03:06:08.4140063Z ##[debug]Importing function 'Write-AssociateArtifact'.

2017-06-30T03:06:08.4150064Z ##[debug]Importing function 'Write-LogDetail'.

2017-06-30T03:06:08.4160065Z ##[debug]Importing function 'Write-SetProgress'.

2017-06-30T03:06:08.4170066Z ##[debug]Importing function 'Write-SetResult'.

2017-06-30T03:06:08.4180067Z ##[debug]Importing function 'Write-SetSecret'.

2017-06-30T03:06:08.4190068Z ##[debug]Importing function 'Write-SetVariable'.

2017-06-30T03:06:08.4200069Z ##[debug]Importing function 'Write-TaskDebug'.

2017-06-30T03:06:08.4230072Z ##[debug]Importing function 'Write-TaskError'.

2017-06-30T03:06:08.4240073Z ##[debug]Importing function 'Write-TaskVerbose'.

2017-06-30T03:06:08.4460095Z ##[debug]Importing function 'Write-TaskWarning'.

2017-06-30T03:06:08.4460095Z ##[debug]Importing function 'Write-UpdateBuildNumber'.

2017-06-30T03:06:08.4620111Z ##[debug]Importing function 'Write-UploadArtifact'.

2017-06-30T03:06:08.4630112Z ##[debug]Importing function 'Write-UploadBuildLog'.

2017-06-30T03:06:08.5110160Z ##[debug]BuildId 604

2017-06-30T03:06:08.5120161Z ##[debug]ProjectId 34147a9c-0c69-4132-aa13-4e2cd697ac95

2017-06-30T03:06:08.5130162Z ##[debug]requestedFor Sumit Yadam

2017-06-30T03:06:08.5130162Z ##[debug]workItemType User Story

2017-06-30T03:06:08.5130162Z ##[debug]WorkItemState Active

2017-06-30T03:06:08.5140163Z ##[debug]WorkItemKanbanState In Dev

2017-06-30T03:06:08.5140163Z ##[debug]WorkItemDone False

2017-06-30T03:06:08.5150164Z ##[debug]updateAssignedTo Never

2017-06-30T03:06:08.9090558Z Index was outside the bounds of the array.

2017-06-30T03:06:08.9100559Z at System.Management.Automation.Adapter.CompareOverloadCandidates(OverloadCandidate candidate1, OverloadCandidate candidate2, Object[] arguments)

2017-06-30T03:06:08.9100559Z at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments)

2017-06-30T03:06:08.9110560Z at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments, PSMethodInvocationConstraints invocationConstraints)

2017-06-30T03:06:08.9110560Z at System.Management.Automation.Adapter.FindBestMethod(MethodInformation[] methods, PSMethodInvocationConstraints invocationConstraints, Object[] arguments, String& errorId, String& errorMsg, Boolean& expandParamsOnBest)

2017-06-30T03:06:08.9110560Z at System.Management.Automation.Language.PSInvokeMemberBinder.InvokeDotNetMethod(DynamicMetaObject target, DynamicMetaObject[] args, BindingRestrictions restrictions, MethodInformation[] mi, Type errorExceptionType)

2017-06-30T03:06:08.9110560Z at System.Management.Automation.Language.PSInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion)

2017-06-30T03:06:08.9110560Z at System.Management.Automation.PSObject.PSDynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)

2017-06-30T03:06:08.9120561Z at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel)

2017-06-30T03:06:08.9120561Z at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args)

2017-06-30T03:06:08.9120561Z at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)

2017-06-30T03:06:08.9120561Z at System.Management.Automation.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)

2017-06-30T03:06:08.9120561Z at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)

2017-06-30T03:06:08.9710620Z ##[error]Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.

@tbolon
Copy link
Contributor

tbolon commented Jun 30, 2017

Same here:

Index was outside the bounds of the array.
   at System.Management.Automation.Adapter.CompareOverloadCandidates(OverloadCandidate candidate1, OverloadCandidate candidate2, Object[] arguments)
   at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments)
   at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments, PSMethodInvocationConstraints invocationConstraints)
   at System.Management.Automation.Adapter.FindBestMethod(MethodInformation[] methods, PSMethodInvocationConstraints invocationConstraints, Object[] arguments, String& errorId, String& errorMsg, Boolean& expandParamsOnBest)
   at System.Management.Automation.Language.PSInvokeMemberBinder.InvokeDotNetMethod(DynamicMetaObject target, DynamicMetaObject[] args, BindingRestrictions restrictions, MethodInformation[] mi, Type errorExceptionType)
   at System.Management.Automation.Language.PSInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion)
   at System.Management.Automation.PSObject.PSDynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)
   at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel)
   at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
   at System.Management.Automation.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.

@tbolon
Copy link
Contributor

tbolon commented Jun 30, 2017

I have tried to create a copy of the task with more traces. The error occurs when calling .GetBuildWorkItemsRefsAsync(). I tried casting the variables without luck.

Write-VstsTaskDebug -Message "Calling GetVssHttpClient for Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient..."
$buildHttpClient = Get-VssHttpClient -TypeName Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient
	
Write-VstsTaskDebug -Message "Converting buildId '$buildId' as int"
$buildIdNum = $buildId -as [int];

Write-VstsTaskDebug -Message "Converting projectId '$projectId' as GUID"
$projectIdGuid = [GUID]$projectId

Write-VstsTaskDebug -Message "Calling buildHttpClient.GetBuildWorkItemsRefsAsync"
$executeTask = $buildHttpClient.GetBuildWorkItemsRefsAsync($projectIdGuid, $buildIdNum);

# Write-VstsTaskDebug -Message "Calling executeTask.Result"
# $workItemsRefs = $executeTask.Result
return 0

The trace:

2017-06-30T15:50:02.1046423Z ##[debug]Constructing HTTP client.
2017-06-30T15:50:02.1202681Z ##[debug]Leaving Get-VssHttpClient.
2017-06-30T15:50:02.1202681Z ##[debug]Converting buildId '48444' as int
2017-06-30T15:50:02.1202681Z ##[debug]Converting projectId 'fb077072-07fd-4ba0-bd11-2753fc89f3af' as GUID
2017-06-30T15:50:02.1202681Z ##[debug]Calling buildHttpClient.GetBuildWorkItemsRefsAsync
2017-06-30T15:50:02.1358949Z Index was outside the bounds of the array.
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Adapter.CompareOverloadCandidates(OverloadCandidate candidate1, OverloadCandidate candidate2, Object[] arguments)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Adapter.FindBestCandidate(IEnumerable`1 candidates, Object[] arguments, PSMethodInvocationConstraints invocationConstraints)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Adapter.FindBestMethod(MethodInformation[] methods, PSMethodInvocationConstraints invocationConstraints, Object[] arguments, String& errorId, String& errorMsg, Boolean& expandParamsOnBest)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Language.PSInvokeMemberBinder.InvokeDotNetMethod(DynamicMetaObject target, DynamicMetaObject[] args, BindingRestrictions restrictions, MethodInformation[] mi, Type errorExceptionType)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.Language.PSInvokeMemberBinder.FallbackInvokeMember(DynamicMetaObject target, DynamicMetaObject[] args, DynamicMetaObject errorSuggestion)
2017-06-30T15:50:02.1358949Z    at System.Management.Automation.PSObject.PSDynamicMetaObject.BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)
2017-06-30T15:50:02.1358949Z    at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel)
2017-06-30T15:50:02.1358949Z    at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args)
2017-06-30T15:50:02.1358949Z    at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
2017-06-30T15:50:02.1515195Z    at System.Management.Automation.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
2017-06-30T15:50:02.1515195Z    at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
2017-06-30T15:50:02.1515195Z ##[debug]Leaving C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\task.ps1.
2017-06-30T15:50:02.1671475Z ##[debug]Caught exception from task script.
2017-06-30T15:50:02.1671475Z ##[debug]Error record:
2017-06-30T15:50:02.2609029Z ##[debug]C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\task.ps1 : Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.
2017-06-30T15:50:02.2609029Z ##[debug]At line:1 char:1
2017-06-30T15:50:02.2609029Z ##[debug]+ . 'C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\task.ps1'
2017-06-30T15:50:02.2609029Z ##[debug]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2017-06-30T15:50:02.2609029Z ##[debug]    + CategoryInfo          : InvalidData: (:) [task.ps1], ParameterBindingValidationException
2017-06-30T15:50:02.2609029Z ##[debug]    + FullyQualifiedErrorId : ParameterArgumentValidationError,task.ps1
2017-06-30T15:50:02.2609029Z ##[debug] 
2017-06-30T15:50:02.2765285Z ##[debug]Script stack trace:
2017-06-30T15:50:02.2765285Z ##[debug]at <ScriptBlock>, C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\task.ps1: line 193
2017-06-30T15:50:02.2765285Z ##[debug]at <ScriptBlock>, <No file>: line 1
2017-06-30T15:50:02.2765285Z ##[debug]at <ScriptBlock>, <No file>: line 22
2017-06-30T15:50:02.2765285Z ##[debug]at <ScriptBlock>, <No file>: line 18
2017-06-30T15:50:02.2765285Z ##[debug]at <ScriptBlock>, <No file>: line 1
2017-06-30T15:50:02.2921564Z ##[debug]Exception:
2017-06-30T15:50:02.2921564Z ##[debug]System.Management.Automation.ParameterBindingValidationException: Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again. ---> System.Management.Automation.ValidationMetadataException: The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.
2017-06-30T15:50:02.2921564Z ##[debug]   at System.Management.Automation.ValidateSetAttribute.ValidateElement(Object element)
2017-06-30T15:50:02.2921564Z ##[debug]   at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, ParameterBindingFlags flags)
2017-06-30T15:50:02.2921564Z ##[debug]   --- End of inner exception stack trace ---
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception exception)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.PSScriptCmdlet.RunClause(Action`1 clause, Object dollarUnderbar, Object inputToProcess)
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.PSScriptCmdlet.DoEndProcessing()
2017-06-30T15:50:02.3077826Z ##[debug]   at System.Management.Automation.CommandProcessorBase.Complete()
2017-06-30T15:50:02.3546599Z ##[error]Cannot validate argument on parameter 'Result'. The argument "Error updating workitems" does not belong to the set "Succeeded,SucceededWithIssues,Failed,Cancelled,Skipped" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.

And I can confirm that the type loaded was from the task directory:

2017-06-30T15:50:02.0733902Z ##[debug]Testing whether type can be loaded: 'Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient'
2017-06-30T15:50:02.0733902Z ##[debug]The type was not loaded.
2017-06-30T15:50:02.0733902Z ##[debug]Testing leaf path: 'C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\Microsoft.TeamFoundation.Build.WebApi.WebApi.dll'
2017-06-30T15:50:02.0733902Z ##[debug]Not found.
2017-06-30T15:50:02.0890164Z ##[debug]Testing leaf path: 'C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\Microsoft.TeamFoundation.Build.WebApi.dll'
2017-06-30T15:50:02.0890164Z ##[debug]Loading assembly: C:\TFS\BuildAgents\VsoBuildAgent\tasks\WorkItemUpdaterDebug\0.1.5\Microsoft.TeamFoundation.Build.WebApi.dll
2017-06-30T15:50:02.1046423Z ##[debug]Testing whether type can be loaded: 'Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient'
2017-06-30T15:50:02.1046423Z ##[debug]The type was loaded successfully.
2017-06-30T15:50:02.1046423Z ##[debug]Leaving Get-OMType.
2017-06-30T15:50:02.1046423Z ##[debug]Constructing HTTP client.
2017-06-30T15:50:02.1202681Z ##[debug]Leaving Get-VssHttpClient.

@tbolon
Copy link
Contributor

tbolon commented Jun 30, 2017

Found a similar bug on another vsts task : microsoft/azure-pipelines-tasks#2045

@tbolon
Copy link
Contributor

tbolon commented Jun 30, 2017

Ok, nailed it. As reported on the vsts-task issue, PowerShell does not handle very well complex methods with multiple overloads and async pattern.

My solution was to add two utility functions first:


#
# Invoke a method with optional params by reflection. 
# This can be used to overcome PS bugs in determining the correct overload candidate method from a .net assembly
#
# Remark: this does not work with polymorphic parameters
function InvokeByReflection
{
    param ($obj, $methodName, [Type[]] $parameterTypes, [Object[]] $parameterValues)

    # GetMethod(name, Type[]) could also be used, but the methods tend to have many parameters and to list them all make the code harder to read
    $publicMethods = $obj.GetType().GetMethods() | Where-Object {($_.Name -eq $methodName) -and  ($_.IsPublic -eq $true)}
    if ($publicMethods.Count -eq 0)
	{
		throw "$methodName not found"
	}

    foreach ($method in $publicMethods)
    {
        $methodParams = $method.GetParameters();
        if ((ParamTypesMatch $methodParams $parameterTypes) -eq $true) 
        {
            $paramValuesAndDefaults = New-Object "System.Collections.Generic.List[Object]"
            $paramValuesAndDefaults.AddRange($parameterValues);

            for ($i=0; $i -lt ($methodParams.Length - $parameterValues.Length); $i++)
            {
                $paramValuesAndDefaults.Add([Type]::Missing);
            } 

            return $method.Invoke($obj, [Reflection.BindingFlags]::OptionalParamBinding, $null, $paramValuesAndDefaults.ToArray(), [Globalization.CultureInfo]::CurrentCulture)
        }
    }

    throw "No suitable overload found for $methodName"
}

#
# Returns true if the candidate types match are a subset of method parameter types, on a position by position basis
# 
function ParamTypesMatch
{
   param ([Reflection.ParameterInfo[]] $methodParams, [Type[]] $candidateTypes)

   for ($i=0; $i -lt $candidateTypes.Length; $i++) {
       if ($methodParams[$i].ParameterType -ne $candidateTypes[$i])
       {
           return $false;
       }
   }
  
   return (($methodParams | Select-Object -Skip $candidateTypes.Length | Where-Object {$_.IsOptional -eq $false}).Count -eq 0)
}

This code has been found in SonarQube extension code, in ScannerMsBuildEnd\PRCA\PostComments-Server.ps1.

Then update method invocation with reflection based calls:

	Write-VstsTaskDebug -Message "Calling buildHttpClient.GetBuildWorkItemsRefsAsync"
	$task = InvokeByReflection $buildHttpClient "GetBuildWorkItemsRefsAsync" @([Guid], [int]) @($projectIdGuid, $buildIdNum)

	Write-VstsTaskDebug -Message "Calling executeTask.Result"
	$workItemsRefs = $task.Result

There are other methods which need replacement.

I will try to create a fork and submit a PR, if the author responds to this comment.

Regards,

@BlueBasher
Copy link
Owner

@tbolon Thanks for looking into this. Your fix using the code from SonarQube looks good to me.
If you could create a PR for it, would be very much appreciated!

@tbolon
Copy link
Contributor

tbolon commented Jul 3, 2017

@BlueBasher I created a PR for the fix. I could not test the patch on my fork, because initially I used the extension zip to have an identical folder layout. Perhaps you should give instruction on how to build/debug the extension from a clean clone.

Regards,

@BlueBasher
Copy link
Owner

I've merged the PR and fixed a small bug with the $projectIdGuid and $buildIdNum variables.
A new version (1.3.4) with these changes has been published in the VSTS Marketplace.
@tbolon Thanks for the help!
FYI: To be honest, building/debugging is a PITA. I usually deploy the extension as a private extensions under a different name. I would like to move from PS to JS at some point in time so debugging would be a lot easier.

@dipenpatelOEH
Copy link
Author

dipenpatelOEH commented Jul 5, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants