【问题标题】:Looking for an Alternative to call a Target with Parameters(=Properties)寻找使用参数(=属性)调用目标的替代方法
【发布时间】:2014-10-05 19:06:01
【问题描述】:

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

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

当前命令行如下所示:

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 的路径并生成“子”msbuild 实例,这也不理想。这相当于让一个批处理文件执行 msbuild。

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

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

【问题讨论】:

  • 您能否在 msbuild 或伪代码中举例说明您希望这个大型目标准确地做什么?我读了你的问题几次,但我仍然不确定。也许你可以使用 MsBuild 任务并在项目文件本身上递归调用它,但同样,我不确定这是否是你的'重新之后

标签: msbuild


【解决方案1】:

诀窍是递归调用 MSBuild。阅读How do you recursively call tasks in MSBuild? 之类的答案,您就会看到曙光。

如果您需要更复杂的迭代,我写了一篇关于“嵌套循环”的博客here

【讨论】:

  • 领先我 5 秒
猜你喜欢
  • 2012-03-13
  • 2016-08-05
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2011-03-25
  • 2020-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多