2011-09-14 9 views
17

सभी सीएसएस फ़ाइलों को एम्बेडेड संसाधन के रूप में जोड़ने के लिए Nuget पैकेज को बताने का सबसे आसान तरीका क्या है (यानी बिल्ड एक्शन एम्बेडेड संसाधन है)।सामग्री का निर्माण कार्य निर्दिष्ट करें - Nuget

मैं उपकरण फ़ोल्डर में install.ps1 के माध्यम से यह करने के लिए कोशिश कर रहा हूँ, लेकिन अभी भी नहीं कर सकते कहीं भी

नोट मिलता है: मैं निर्देशिका संरचना से पैकेज बनाने हूँ (उपकरण \ सामग्री \ lib)

यह मेरा install.ps1 है जो काम नहीं करता है।

param($installPath, $toolsPath, $package, $project) 
$MsbNS = @{msb = 'http://schemas.microsoft.com/developer/msbuild/2003'}  
function EmbeddContent($ProjectLink, [string]$XPath) 
{ 
    $nodes = @(Select-Xml $XPath $ProjectLink -Namespace $MsbNS | Foreach {$_.Node}) 

    foreach ($node in $nodes) 
    { 
    if($node.Include.StartsWith("Content\css")) 
    {   
     $cet = $node.ownerdocument.CreateElement("EmbeddedResource") 
     $cet.setAttribute("Include", $node.Include) 
     $parent = $node.ParentNode   
     [void]$parent.RemoveChild($node) 
     [void]$parent.Appendchild($cet)   
    } 
    } 
} 
$project.Save() 
$fileLocation = $project.FileName 
$dte.ExecuteCommand("Project.UnloadProject"); 

$proj = [xml](gc $fileLocation) 
Embeddcontent $fileLocation '//msb:Project/msb:ItemGroup/msb:Content' 
$proj.Save($fileLocation) 

मदद करें ..

उत्तर

35

इसके बजाय आप एक्सएमएल के साथ खिलवाड़ BuildAction बदलने के लिए की DTE उपयोग कर सकते हैं। http://nuget.codeplex.com/discussions/227696 से:

$item = $project.ProjectItems | where-object {$_.Name -eq "ReleaseNotes.txt"} 
$item.Properties.Item("BuildAction").Value = [int]3 

यह लिंक गणन मान दिखाता है: http://msdn.microsoft.com/en-us/library/aa983962(VS.71).aspx

+0

श्री Fowler, आप सर कमाल कर रहे हैं। :) – labroo

+4

उस enum में सूचीबद्ध केवल कुछ बिल्डएक्शन हैं। क्या "टाइपस्क्रिप्ट कॉम्पाइल" बिल्ड एक्शन निर्दिष्ट करने का कोई तरीका है? – BSick7

+1

@ बीएसआईसी 7, हे, मैं वही चीज़ ढूंढ रहा हूं, कुछ ढूंढूं? –

संबंधित मुद्दे