寻找用参数调用目标的替代方法(=属性)

时间:2014-08-12 15:59:27

标签: msbuild

我创建了一个目标,它调用不同的子目标来完成某项工作,例如复制文件并对其执行操作。

现在我想用不同的参数(=属性)多次调用这个目标

当前命令行如下所示:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe d:\Sync\sync.msbuild.xml /p:source="D:\temp" /p:destination="P:\d\temp"

现在,这个命令行经常被调用,具有源和目标的不同属性。

我想创建一个msbuild"项目"从sync.msbuild.xml导入构建目标的文件(这部分很简单)并定义一个调用导入的默认目标或任何其他目标的大目标。

我已经探索了一些选项,我的结论是我想避免使用CallTarget,因为我需要使用CreateProperty创建属性,导致过于冗长(我是试图避免使用"项目"构建文件。

通过Exec的另一个选项也需要太多冗余,我需要存储MSBuild的路径并生成" sub" msbuild实例,这也不理想。这相当于让批处理文件执行msbuild。

这有适当的解决方案吗?是否有Task可以调用目标。 (不是通过创建调用Process.Start的代码片段任务)

我不想在工具链中引入批处理,python或其他任何东西。

1 个答案:

答案 0 :(得分:1)

诀窍是以递归方式调用MSBuild。阅读像How do you recursively call tasks in MSBuild?这样的答案,你会看到光。

如果你需要更复杂的迭代,我在博客上写了“嵌套循环”here