2013-09-27 11 views
9

Ho problemi con lo script ps in init.ps1 del pacchetto nuget. Sto cercando di creare una cartella della soluzione al momento dell'installazione del pacchetto E quindi copiare dlls/pdbs in questa cartella (ed eliminare il file dll/pdbs di origine installato dal pacchetto nel progetto). Sono in grado di creare la cartella della soluzione, ma sto avendo problemi a copiare i file dalla directory \ content \ temp alla cartella della soluzione. In effetti, voglio davvero una vera cartella sul filesystem e una cartella della soluzione da abbinare, quindi la copia dovrebbe copiare i file nella cartella del file system reale e quindi essere aggiunta alla cartella della soluzione.
La porzione di copia non funziona e non ricevo errori di output. Bit perso.Copia i file nella cartella della soluzione con init.ps1 e nuget

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 
+0

Fuori di interesse, quali sono i percorsi che stai passando a $ installpath e $ toolsPath – mitchimus

+0

@mitchimus questi i percorsi vengono passati dall'ambiente NuGet Powershell e corrispondono al percorso assoluto in cui è installato il pacchetto (una directory nella directory "packages", che si trova nella stessa directory del file della soluzione) e il percorso della cartella "tools" in $ installPath, rispettivamente. – ygormutti

risposta

7

Ho avuto lo stesso problema e ho trovato uno script PowerShell nel progetto BuildDeploySupport che ha fatto esattamente questo. Tutto ciò che devi fare è aggiornare il nome della cartella che desideri copiare (Distribuisci \ Supporto nella ps1 collegata sotto) in diversi punti.

Vedi BuildDeploySupport Solution Folder Copy Init.ps1

Da collegamento (al 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 
+1

Si scopre che lo script non è ricorsivo, ma renderlo ricorsivo è facile. Modificare la riga 36 per leggere: 'ls -recurse $ deployTarget | foreach-object {' – mshish

+3

Copia i pezzi pertinenti (lascia il link come attribuzione). I siti Web sono stati conosciuti per scomparire e persino cambiare nel tempo. – Crisfole

Problemi correlati