Public/Nuget/Add-PackageReference.ps1
function Add-PackageReference { [CmdletBinding(DefaultParameterSetName="Project")] [CmdLetTag("#nuget")] param ( [parameter(Mandatory,ValueFromPipeline,ParameterSetName="Project")] [xml]$Project, [parameter(Mandatory,ValueFromPipeline,ParameterSetName="Project")] [version]$Version, [parameter(Mandatory,ValueFromPipeline)] [string]$Package, [parameter(ParameterSetName="Sources")] [string[]]$Source=(Get-PackageSourceLocations -Verbose:$false) ) begin { if ($PSCmdlet.ParameterSetName -ne "Project"){ $projects=Get-ChildItem *.*proj if (!$projects){ throw "Projects not found" } if ($projects.count -gt 1){ $projects throw "Multiple projects found" } } } process { if ($PSCmdlet.ParameterSetName -eq "Project") { Add-XmlElement $Project PackageReference ItemGroup ([ordered]@{ Include = $package Version = $Version }) return } try { for ($i = 0; $i -lt $Source.Count; $i++) { $s=$Source[$i] $key+="<add key=`"$i`" value=`"$s`"/>" } $xml=@" <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> $key </packageSources> </configuration> "@ Set-Content .\Nuget.config $xml Invoke-Script{dotnet add package $Package} } finally { Remove-Item .\Nuget.config -Force -ErrorAction SilentlyContinue } } end { } } |