I am having trouble with ps script in init.ps1 of nuget package. I am trying to create a solution folder upon install of the package AND then copy dlls/pdbs to this folder (and delete the source dll/pdbs installed by the package in the project).
I am able to create the solution folder, but am having trouble copying the files from the \content\temp directory to the solution folder.
In fact, i really want a real folder on the filesystem and a solution folder to match, so the copy should copy the files to the real file system folder and then be added to the solution folder.
The copy portion is not working and I am not getting any output errors. Bit lost.
param($installPath, $toolsPath, $package, $project)
# Get the open solution.
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
# Create the parent solution folder.
$parentProject = $solution.AddSolutionFolder("MyDlls")
# Create a child solution folder.
$parentSolutionFolder = Get-Interface $parentProject.Object ([EnvDTE80.SolutionFolder])
$fileName = (Join-Path $installPath "\temp\mydll")
$projectFile = $parentSolutionFolder.AddFromFile($fileName)
Write-Host ""
Write-Host $sourcePath
Write-Host $parentSolutionFolder
I had the same issue and found a PowerShell script in the BuildDeploySupport project that did exactly this. All you need to do is update the name of the folder you'd like to copy in (Deploy\Support in the ps1 linked below) in several places.
See BuildDeploySupport Solution Folder Copy Init.ps1
From link (as of 30/11/2017):
param($installPath, $toolsPath, $package)
# find out where to put the files, we're going to create a deploy directory
# at the same level as the solution.
$rootDir = (Get-Item $installPath).parent.parent.fullname
$deployTarget = "$rootDir\Deploy\Support\"
# create our deploy support directory if it doesn't exist yet
$deploySource = join-path $installPath 'tools/deploy'
if (!(test-path $deployTarget)) {
mkdir $deployTarget
}
# copy everything in there
Copy-Item "$deploySource/*" $deployTarget -Recurse -Force
# get the active solution
$solution = Get-Interface $dte.Solution ([EnvDTE80.Solution2])
# create a deploy solution folder if it doesn't exist
$deployFolder = $solution.Projects | where-object { $_.ProjectName -eq "Deploy" } | select -first 1
if(!$deployFolder) {
$deployFolder = $solution.AddSolutionFolder("Deploy")
}
# add all our support deploy scripts to our Support solution folder
$folderItems = Get-Interface $deployFolder.ProjectItems ([EnvDTE.ProjectItems])
ls $deployTarget | foreach-object {
$folderItems.AddFromFile($_.FullName) > $null
} > $null
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With