Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 我可以在MSBuild文件中执行循环吗?_Loops_Msbuild_Refactoring_Iteration - Fatal编程技术网

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"/>