gpt4 book ai didi

loops - 我可以在 MSBuild 文件中执行循环吗?

转载 作者:行者123 更新时间:2023-12-02 00:53:36 25 4
gpt4 key购买 nike

目前,我已经在 MSBuild proj 文件中跟踪了代码。这真的很简单。定义 4 个变量并为每个变量调用一次我的 MSBuild 任务:

请输入代码~~

<ItemGroup><JS_File1 Include="file1.js"/></ItemGroup>
<ItemGroup><JS_File1 Include="file2.js"/></ItemGroup>
<ItemGroup><JS_File1 Include="file3.js"/></ItemGroup>
<ItemGroup><JS_File1 Include="file4.js"/></ItemGroup>

<JavaScriptCompressorTask SourceFiles="@(JS_File1)" OutputFile="@(JS_File1).min"/>
<JavaScriptCompressorTask SourceFiles="@(JS_File2)" OutputFile="@(JS_File2).min"/>
<JavaScriptCompressorTask SourceFiles="@(JS_File3)" OutputFile="@(JS_File3).min"/>
<JavaScriptCompressorTask SourceFiles="@(JS_File4)" OutputFile="@(JS_File4).min"/>

没有什么令人兴奋的。

我想知道是否可以将其重构为这样的东西。

失败伪代码~~

<ItemGroup>
<JS_File1 Include="file1.js"/>
<JS_File1 Include="file2.js"/>
<JS_File1 Include="file3.js"/>
<JS_File1 Include="file4.js"/>
</ItemGroup>

<!-- now this is the shiz i have no idea about -->
foreach(@(JS_Files))
<JavaScriptCompressorTask SourceFiles="@(theFile)" OutputFile="@(theFile).min"/>

在 MSBuild 中可以做到这一点吗?

所以该任务被称为“每个文件一次”..或更确切地说,“项目组中的每个项目一次”?

最佳答案

您可以使用项目元数据对任务进行批处理(请参阅 http://msdn.microsoft.com/en-us/library/ms171474.aspx)。

所有项目都有名为“Identity”的元数据,其中包含 Include 属性的值。如果使用元数据引用语法 %(Identity),这将指示 MSBuild 针对每个唯一的 Include 值执行任务。

<ItemGroup>
<JS_File1 Include="file1.js"/>
<JS_File1 Include="file2.js"/>
<JS_File1 Include="file3.js"/>
<JS_File1 Include="file4.js"/>
</ItemGroup>

<JavaScriptCompressorTask SourceFiles="@(JS_File1)" OutputFile="%(Identity).min"/>

请注意,MSBuild 知道您正在引用 JS_File1 项组的标识元数据,因为您在任务中引用了它。否则,您需要使用语法 %(JS_File1.Identity)

关于loops - 我可以在 MSBuild 文件中执行循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com