指定内容的构建操作 - Nuget

lab*_*roo 17 c# powershell embedded-resource visual-studio nuget

告诉Nuget包将所有css文件添加为嵌入式资源(即构建操作是嵌入式资源)的最简单方法是什么.

我试图通过工具文件夹中的install.ps1来做到这一点,但仍然无法到达任何地方

注意:我从目录结构创建包(tools\content\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)
Run Code Online (Sandbox Code Playgroud)

请帮忙 ..

dav*_*owl 36

您可以使用DTE而不是使用xml来更改BuildAction.来自http://nuget.codeplex.com/discussions/227696:

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

此链接显示枚举值:http: //msdn.microsoft.com/en-us/library/aa983962(VS.71).aspx

  • 如果你想要访问文件夹中的文件,你必须这样做:$ project.ProjectItems.Item("SomeFolder").ProjectItems.Item("ReleaseNotes.txt") (7认同)
  • 该枚举中只列出了几个BuildActions.有没有办法指定"TypeScriptCompile"构建操作? (4认同)