Update packages vari... json / webgrease
This commit is contained in:
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+7374
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+7738
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+90
@@ -0,0 +1,90 @@
|
||||
param($installPath, $toolsPath, $package, $project)
|
||||
|
||||
# Return a relative path with reference to root as Uri object
|
||||
# $rootPath - root path
|
||||
# $relativePath - relative path
|
||||
# $appendToRelativePath - Optional parameter. If provided will be appended to relative Path using Path.Combine()
|
||||
Function GetRelativeUri($rootPath, $relativePath, $appendToRelativePath)
|
||||
{
|
||||
if($rootPath -eq $null)
|
||||
{
|
||||
return $null
|
||||
}
|
||||
|
||||
if($relativePath -eq $null)
|
||||
{
|
||||
return $null
|
||||
}
|
||||
|
||||
$rootUri = new-object system.Uri($rootPath)
|
||||
$targetPath = $relativePath
|
||||
|
||||
# If appendToRelativePath is provided then use it
|
||||
if($appendToRelativePath -ne $null)
|
||||
{
|
||||
$targetPath = [io.path]::Combine($relativePath, $appendToRelativePath)
|
||||
}
|
||||
|
||||
$targetUri = new-object system.Uri($targetPath)
|
||||
$relativeUri = $rootUri.MakeRelativeUri($targetUri)
|
||||
|
||||
return $relativeUri
|
||||
}
|
||||
|
||||
# Visual Studio execution done via NuGet Package Manager
|
||||
Function VSExecution($installPath, $package, $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
|
||||
|
||||
# add a property for us to be able to reference the path where the package was installed
|
||||
$relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib"
|
||||
|
||||
$msbuild.Xml.AddProperty("WebGreaseLibPath", $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar))
|
||||
|
||||
# save the project
|
||||
$project.Save()
|
||||
}
|
||||
|
||||
# Command line execution done by any external tool (For example, NuGetUpdater)
|
||||
# $package - package id
|
||||
# $project - parameter value is path to Project file in this case.
|
||||
Function CommandLineExecution($installPath, $package, $project)
|
||||
{
|
||||
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Build")
|
||||
[Reflection.Assembly]::LoadWithPartialName("System.Xml")
|
||||
[Reflection.Assembly]::LoadWithPartialName("System.Xml.Linq")
|
||||
|
||||
# Get the msbuild version of the project and add the import
|
||||
$projXDoc = [System.Xml.Linq.XDocument]::Load($project)
|
||||
|
||||
$defaultNameSpace = $projXDoc.Root.GetDefaultNamespace()
|
||||
|
||||
$propertyGroup = [System.Xml.Linq.XName]::Get("PropertyGroup", $defaultNameSpace.NamespaceName)
|
||||
$webGreaseBuildLocation = [System.Xml.Linq.XName]::Get("WebGreaseLibPath", $defaultNameSpace.NamespaceName)
|
||||
|
||||
# add a property for us to be able to reference the path where the package was installed
|
||||
$relativePackageUri = GetRelativeUri $project.FullName $installPath"\lib"
|
||||
|
||||
$propGroupElement = $projXDoc.Root.Elements($propertyGroup) | Select-Object -First 1
|
||||
IF ($propGroupElement -ne $null)
|
||||
{
|
||||
$newElement = new-object System.Xml.Linq.XElement($webGreaseBuildLocation, $relativePackageUri.ToString().Replace([System.IO.Path]::AltDirectorySeparatorChar, [System.IO.Path]::DirectorySeparatorChar))
|
||||
$propGroupElement.Add($newElement)
|
||||
}
|
||||
|
||||
# save the project
|
||||
$projXDoc.Save($project)
|
||||
}
|
||||
|
||||
|
||||
IF ($project -is [system.string])
|
||||
{
|
||||
CommandLineExecution $installPath $package $project
|
||||
}
|
||||
ELSE
|
||||
{
|
||||
VSExecution $installPath $package $project
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user