代码之家  ›  专栏  ›  技术社区  ›  Ferdeen

如何递归调用msbuild中的任务?

  •  3
  • Ferdeen  · 技术社区  · 17 年前

    例如,我想每次调用这些传递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> 
    
    1 回复  |  直到 17 年前
        1
  •  2
  •   Julien Hoarau    17 年前

    你可以用 MSBug任务 具有 性质 .

    <!-- 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>
    
    推荐文章