由网友(野妓)分享简介:例如。我想打电话给这些脚本每次路过差异PARAMS:< ItemGroup>< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts \ $(SourceServiceName)\表\ * SQL。/>< SqlFiles包括=$(So...
例如。我想打电话给这些脚本每次路过差异PARAMS:
< ItemGroup>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)表 * SQL。/>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)功能 * SQL。/>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)意见 * SQL。/>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName) ForeignKeys * SQL。/>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName) StoredProcedures * SQL。/>
< SqlFiles包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName) DATA * SQL。/>
< / ItemGroup>
解决方案
您可以到使用的 MSBuild任务与属性的。
<! - 不要逐项SQL文件现在,如果你想者区分任务操作 - >
< ItemGroup>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)表/>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)功能/>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)查看/>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName) ForeignKeys/>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName) StoredProcedures/>
< SqlDirs包括=$(SourceServicesDbSqlRootDir)CreateScripts $(SourceServiceName)数据/>
< / ItemGroup>
<目标名称=MainTask的>
&所述; MSBuild的项目=$(MSBuildProjectFile)
属性=SqlDir =%(SqlDirs.Fullpath)
目标=RecursivelyCalledTask>
<输出=了itemnameProjSourcesTaskParameter =TargetOutputs/>
< /的MSBuild>
< /目标>
<目标名称=RecursivelyCalledTask>
<! - 在这里,我们创建SqlFiles项目的基础上SqlDir - >
< createItem中包括=$(SqlDir) * SQL。>
<输出=了itemnameSqlFilesTaskParameter =包含/>
< / createItem中>
<消息文本=SqlFiles - > @(SqlFiles)/>
< /目标>
E.g. I want to call these scripts passing diff params each time:
<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>
解决方案
You could to that by using MSBuild Task with Properties.
<!-- 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>
相关推荐
最新文章