uninstall.ps1 1.83 KB
param($installPath, $toolsPath, $package, $project)

# Visual Studio execution done via NuGet Package Manager
Function VSExecution($toolsPath, $project)
{
	

	$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty)

	# Get the msbuild version of the project and add the import
	$msbuild = [Microsoft.Build.Evaluation.ProjectCollection]::GlobalProjectCollection.GetLoadedProjects($project.FullName) | Select-Object -First 1

	# now remove our property that points to this package path, "WebGreaseLibPath"
	foreach ($property in $msbuild.Properties)
	{
		if ($property.Name -eq "WebGreaseLibPath")
		{
			$propertyToRemove = $property
		}
	}

	if ($propertyToRemove -ne $null)
	{
		$propertyToRemove.Project.RemoveProperty($propertyToRemove)
		$project.Save()
	}

	$project.DTE.ExecuteCommand("File.SaveAll", [system.string]::Empty)
}

# Command line execution done by any external tool (For example, NuGetUpdater)
# $project - parameter value is path to Project file in this case.
Function CommandLineExecution($toolsPath, $project)
{
	[Reflection.Assembly]::LoadWithPartialName("System.Xml")
	[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")


	
	$projXDoc = [System.Xml.Linq.XDocument]::Load($project)
	$defaultNameSpace = $projXDoc.Root.GetDefaultNamespace()
	$xmlReader = $projXDoc.CreateReader()
	$namespaceManager = new-object System.Xml.XmlNamespaceManager($xmlReader.NameTable)
	$namespaceManager.AddNamespace("my", $defaultNameSpace.NamespaceName)

	$msnRfPackageElement = [System.Xml.XPath.Extensions]::XPathSelectElement($projXDoc.Root, "//my:WebGreaseLibPath", $namespaceManager)
	if($msnRfPackageElement -ne $null)
	{
		$msnRfPackageElement.Remove()
	}
	
	# save the project
	$projXDoc.Save($project)
}

IF ($project -is [system.string])
{
    CommandLineExecution $toolsPath $project
}
ELSE
{
    VSExecution $toolsPath $project
}