Loops 我可以在MSBuild文件中执行循环吗?
目前,我在Loops 我可以在MSBuild文件中执行循环吗?,loops,msbuild,refactoring,iteration,Loops,Msbuild,Refactoring,Iteration,目前,我在MSBuildproj文件中获得了以下代码。这真的很简单。定义4个变量,并为每个变量调用一次我的MSBuild任务: 密码~~ 一点也不刺激 我想知道这是否可以重构成这样 失败伪码~~ foreach(@(JS_文件)) 是否可以在MSBuild中执行此操作 以便每个文件调用一次任务。。或者更切题,在项目组中每个项目一次?像这样,除了使用您的任务而不是我的副本 <?xml version="1.0" encoding="utf-8"?> <Project To
MSBuild
proj文件中获得了以下代码。这真的很简单。定义4个变量,并为每个变量调用一次我的MSBuild任务:
密码~~
一点也不刺激
我想知道这是否可以重构成这样
失败伪码~~
foreach(@(JS_文件))
是否可以在MSBuild中执行此操作
以便每个文件调用一次任务。。或者更切题,在项目组中每个项目一次?像这样,除了使用您的任务而不是我的副本
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Minifier" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Minifier">
<ItemGroup>
<JS_File1 Include="file1.js"/>
<JS_File1 Include="file2.js"/>
<JS_File1 Include="file3.js"/>
<JS_File1 Include="file4.js"/>
</ItemGroup>
<Copy SourceFiles="@(JS_File1)" DestinationFiles="@(JS_File1->'%(Filename).min')"/>
</Target>
</Project>
希望这有帮助。您可以使用项目元数据来批处理任务(请参阅) 所有项都有名为“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)
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Minifier" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Minifier">
<ItemGroup>
<JS_File1 Include="file1.js"/>
<JS_File1 Include="file2.js"/>
<JS_File1 Include="file3.js"/>
<JS_File1 Include="file4.js"/>
</ItemGroup>
<Copy SourceFiles="@(JS_File1)" DestinationFiles="@(JS_File1->'%(Filename).min')"/>
</Target>
</Project>
<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"/>