Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
.net 如何在MSBuild中递归调用任务?_.net_Msbuild_Build Process_Msbuild Task - Fatal编程技术网

.net 如何在MSBuild中递归调用任务?

.net 如何在MSBuild中递归调用任务?,.net,msbuild,build-process,msbuild-task,.net,Msbuild,Build Process,Msbuild Task,例如,我希望每次调用这些传递diff参数的脚本: <ItemGroup> <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Tables\*.sql" /> <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceNam

例如,我希望每次调用这些传递diff参数的脚本:

<ItemGroup> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Tables\*.sql" /> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Functions\*.sql" /> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Views\*.sql" /> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\ForeignKeys\*.sql" /> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\StoredProcedures\*.sql" /> 
        <SqlFiles Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Data\*.sql" /> 
</ItemGroup> 

您可以通过使用带有属性的MSBuild任务来实现这一点


<!-- Dont itemize sql files now, if you want to differenciate the task operations -->
<ItemGroup> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Tables" /> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Functions" /> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Views" /> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\ForeignKeys" /> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\StoredProcedures" /> 
  <SqlDirs Include="$(SourceServicesDbSqlRootDir)CreateScripts\$(SourceServiceName)\Data" /> 
</ItemGroup>


<Target Name="MainTask">
  <MSBuild Projects="$(MSBuildProjectFile)" 
           Properties="SqlDir=%(SqlDirs.Fullpath)"
           Targets="RecursivelyCalledTask">
    <Output ItemName="ProjSources" TaskParameter="TargetOutputs"/>
  </MSBuild>
</Target>

<Target Name="RecursivelyCalledTask">
  <!-- We create here the SqlFiles items based on SqlDir-->
  <CreateItem Include="$(SqlDir)\*.sql">
    <Output ItemName="SqlFiles" TaskParameter="Include"/>
  </CreateItem>

  <Message Text="SqlFiles -> @(SqlFiles)"/>
</Target>