private static string GetVariableNames(List <ScriptVariable> scriptVariables, ScriptTaskScope scope, ProjectWrapper projectWrapper, PackageWrapper packageWrapper, ContainerWrapper containerWrapper) { if (scriptVariables == null) { return(string.Empty); // Return early if there are no variables configured for the script. } List <string> qualifiedVariableNames = new List <string>(); foreach (ScriptVariable scriptVariable in scriptVariables) { string qualifiedScriptVariableName = GetQualifiedVariableName(scriptVariable); switch (scriptVariable.Namespace) { case "$Package": if (scope == ScriptTaskScope.Package) { if (!packageWrapper.ContainsParameter(scriptVariable.VariableName)) { throw new InvalidOperationException($"Could find referenced package parameter {scriptVariable.VariableName}!"); } } break; case "$Project": if (!projectWrapper.ContainsParameter(scriptVariable.VariableName)) { throw new InvalidOperationException($"Could find referenced project parameter {scriptVariable.VariableName}!"); } break; default: if (scope == ScriptTaskScope.Package) { if (!containerWrapper.ContainsVariable(qualifiedScriptVariableName) && !packageWrapper.ContainsVariable(qualifiedScriptVariableName)) { throw new InvalidOperationException($"Couldn't find referenced variable {qualifiedScriptVariableName}!"); } } break; } qualifiedVariableNames.Add(qualifiedScriptVariableName); } return(string.Join(",", qualifiedVariableNames)); }