function Add-ToolFolder([System.String] $folder) { $flattenedValue = Get-ExtenderPropertyValue $allFolders = New-Object "System.Collections.Generic.List``1[System.String]" if($flattenedValue.Length -gt 0) { $allFolders.AddRange($flattenedValue.Split(';')) } if( -not $allFolders.Contains($folder) ) { $allFolders.Add($folder) $flattenedValue = [System.String]::Join(';', $allFolders.ToArray()) Set-ExtenderPropertyValue($flattenedValue) } } function Remove-ToolFolder([System.String] $folder) { $flattenedValue = Get-ExtenderPropertyValue $allFolders = New-Object "System.Collections.Generic.List``1[System.String]" if($flattenedValue.Length -gt 0) { $allFolders.AddRange($flattenedValue.Split(';')) } if( $allFolders.Remove($folder) ) { $flattenedValue = [System.String]::Join(';', $allFolders.ToArray()) Set-ExtenderPropertyValue($flattenedValue) } } function Get-ExtenderPropertyValue { if( $dte.Solution.Globals.VariableExists("EnterpriseLibraryConfigurationToolBinariesPath") -and $dte.Solution.Globals.VariablePersists("EnterpriseLibraryConfigurationToolBinariesPath") ) { return $dte.Solution.Globals.VariableValue("EnterpriseLibraryConfigurationToolBinariesPath") } return "" } function Set-ExtenderPropertyValue([System.String] $value) { if( [System.String]::IsNullOrWhiteSpace($value) ) { if( $dte.Solution.Globals.VariableExists("EnterpriseLibraryConfigurationToolBinariesPath") ) { $dte.Solution.Globals.VariablePersists("EnterpriseLibraryConfigurationToolBinariesPath") = $False } } else { $dte.Solution.Globals.VariableValue("EnterpriseLibraryConfigurationToolBinariesPath") = $value $dte.Solution.Globals.VariablePersists("EnterpriseLibraryConfigurationToolBinariesPath") = $True } } function Get-RelativePath([System.String] $basePath, [System.String] $targetPath) { # not a general purpose relative path calculation algorithm return ($targetPath.Substring($basePath.Length)).TrimStart([System.Io.Path]::DirectorySeparatorChar) } function Cleanup { }