我正在重写我们的NAnt构建脚本,以使它们更简洁、更通用。
我们构建过程中的步骤之一是将某些文件打包成一个 zip 文件。在我们创建一个fileset
包含大量文件类型的文件之前,试图捕捉项目中可能存在的所有内容。当我们想在项目中包含非标准文件类型时,这偶尔会导致问题。
我希望我能找到一种方法来创建fileset
基于Visual Studio 项目文件 (.csproj) 中列出的文件(以及文件的子集)的方法。zip
然后我可以在任务中使用这个文件集。我还没有找到任何可以自动执行此操作的东西(尽管NAntContribSLiNgshoT
中现已弃用的任务看起来有点有希望)。
我开始尝试手动执行此操作,但被卡住了。我有一个从解决方案中获取项目的目标(使用regex
),然后尝试使用xmlpeek
(使用 XPath 查询/n:Project/n:ItemGroup/n:Content/@Include
)获取项目中的每个内容文件。这里的问题是它xmlpeek
不会返回每个值,只返回第一个值。而且,即使它确实返回了每个值,我也不确定如何fileset
从这里把它变成 a 。
有没有办法挽救这种思维轨迹?我可以通过自定义 NAnt 任务完成我想要的吗(我不希望每个项目都依赖于自定义任务)?是否有一些我没有找到的内置方法来做到这一点?
如果我的目标或方法不清楚,请随时在评论中提问。
谢谢!
更新:澄清一下,我的观点是让整个过程更加无缝。虽然我可以轻松地将所有 .xml 文件添加到包中,但这通常会获得位于同一文件夹中但实际上并不是项目的一部分的 .xml 文件。当我已经有了项目使用的文件列表(甚至在内容和其他类型之间分开)时,不使用这些信息似乎很可惜。最终,任何人都不应该接触构建文件来更改包中包含的内容。对我来说,这似乎不是一个白日梦……