2013-09-27 6 views
9

के साथ समाधान फ़ोल्डर में कॉपी करें मुझे nuget पैकेज में init.ps1 में ps स्क्रिप्ट के साथ समस्या हो रही है। मैं पैकेज स्थापित करने पर एक समाधान फ़ोल्डर बनाने की कोशिश कर रहा हूं और फिर इस फ़ोल्डर में डीएलएस/पीडीबी कॉपी करता हूं (और प्रोजेक्ट में पैकेज द्वारा स्थापित स्रोत डीएलएल/पीडीबी हटा देता हूं)। मैं समाधान फ़ोल्डर बनाने में सक्षम हूं, लेकिन \ content \ temp निर्देशिका से फ़ाइलों को कॉपी फ़ोल्डर में कॉपी करने में समस्या आ रही है। वास्तव में, मैं वास्तव में फाइल सिस्टम पर एक वास्तविक फ़ोल्डर और समाधान फ़ोल्डर को मिलान करना चाहता हूं, इसलिए प्रतिलिपि फ़ाइलों को वास्तविक फ़ाइल सिस्टम फ़ोल्डर में प्रतिलिपि बनाना चाहिए और फिर समाधान फ़ोल्डर में जोड़ा जाना चाहिए।
कॉपी हिस्सा काम नहीं कर रहा है और मुझे कोई आउटपुट त्रुटियां नहीं मिल रही हैं। बिट खो गयाफ़ाइलों को init.ps1 और 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

, पथ आप $ InstallPath को गुजर रहे हैं और $ toolsPath – mitchimus

+0

इन @mitchimus क्या कर रहे हैं पथ NuGet पावरहेल पर्यावरण द्वारा पारित किए जाते हैं और पूर्ण पथ से मेल खाते हैं जहां पैकेज स्थापित है ("पैकेज" निर्देशिका में एक निर्देशिका, जो समाधान फ़ाइल के समान निर्देशिका में है) और $ "टूल" फ़ोल्डर का पथ $ क्रमशः installPath। – ygormutti

उत्तर

7

मैं एक ही मुद्दा था और BuildDeploySupport परियोजना है कि ने बिल्कुल इस में एक PowerShell स्क्रिप्ट नहीं मिली। आपको बस इतना करना है कि आप जिस फ़ोल्डर में प्रतिलिपि बनाना चाहते हैं उसका नाम अपडेट करें (नीचे दिए गए ps1 में समर्थित \ सहायता) कई स्थानों पर।

देखें BuildDeploySupport Solution Folder Copy Init.ps1

लिंक से (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

यह बताता है कि स्क्रिप्ट रिकर्सिव नहीं है, लेकिन इसे रिकर्सिव बनाना आसान है। पढ़ने के लिए लाइन 36 संशोधित करें: 'ls -recurse $ deployTarget | foreach-object {' – mshish

+3

कृपया प्रासंगिक टुकड़ों में प्रतिलिपि बनाएँ (लिंक को एट्रिब्यूशन के रूप में छोड़ दें)। वेब साइट गायब होने और समय के साथ बदलने के लिए भी जाना जाता है। – Crisfole