指定内容的构建操作 - Nuget

Posted

技术标签:

【中文标题】指定内容的构建操作 - Nuget【英文标题】:specify build action of content - Nuget 【发布时间】:2011-11-17 10:09:44 【问题描述】:

告诉 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)

请帮忙..

【问题讨论】:

【参考方案1】:

您可以使用 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

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

【讨论】:

福勒先生,您太棒了。 :) 该枚举中只列出了几个 BuildAction。有没有办法指定“TypeScriptCompile”构建操作? @BSick7,呵呵,我也在找同样的东西,找到什么了吗? 如果你想访问文件夹中的文件,你必须像这样访问它: $project.ProjectItems.Item("SomeFolder").ProjectItems.Item("ReleaseNotes.txt" ) 要设置其他任何内容,请执行以下操作:$item.Properties.Item("ItemType").Value = "MyOwnBuildActionChoice"

以上是关于指定内容的构建操作 - Nuget的主要内容,如果未能解决你的问题,请参考以下文章

在 GitHub 和 NuGet 上发布的项目中,我应该如何指定强名称键的路径?

如何删除 nuget 包上的预发布指定?

NuGet 自动包还原不适用于 MSBuild

Nuget 在VS中操作命令

Nuget包仅用于内容文件

如何指定安装NuGet包的目录?