Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
如何使用msbuild获取exec任务输出_Msbuild_Exec_Msbuild Task - Fatal编程技术网

如何使用msbuild获取exec任务输出

如何使用msbuild获取exec任务输出,msbuild,exec,msbuild-task,Msbuild,Exec,Msbuild Task,我正在尝试使用msbuild通过exec任务获得简单输出: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Test"> <Exec Command="echo test output"> <Output TaskParameter="Outputs" ItemName="Test1" /> <

我正在尝试使用
msbuild
通过exec任务获得简单输出:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" ItemName="Test1" />
    </Exec>
    <Exec Command="echo test output">
      <Output TaskParameter="Outputs" PropertyName="Test2" />
    </Exec>
    <Message Text="----------------------------------------"/>
    <Message Text="@(Test1)"/>
    <Message Text="----------------------------------------"/>
    <Message Text="$(Test2)"/>
    <Message Text="----------------------------------------"/>
  </Target>
</Project>

如何通过脚本获得输出?

我已经到了一个地步,我对MSBuild的局限性感到非常失望,这些东西本应该可以工作,但却不能(至少不是在所有上下文中都可以),几乎在任何时候我需要用MSBuild做任何事情时,我都会在C#中创建一个自定义的构建任务


如果其他建议都不起作用,那么您当然可以这样做。

可以说,您可以将输出通过管道传输到一个文件中,然后将其读回

echo test output > somefile.txt

各位好消息!从.NET 4.5开始,您现在可以从
捕获输出

像这样:

<Exec ... ConsoleToMSBuild="true">
  <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" />
</Exec>

简单地说:

  • consoleTombuild=“true”
    添加到您的
    标记中
  • 使用
    标记中的
    ConsoleOutput
    参数捕获输出
终于


如果要将输出捕获到类似数组的结构中,而不是捕获到输出行以分号分隔的普通字符串中,请使用ItemName而不是PropertyName

<Exec ... ConsoleToMSBuild="true">
  <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>


的可能重复似乎是真的,谢谢我是DocuemStation Information小姐。文档通常不是关于什么不可能,而是关于什么是可能。话虽如此,你的问题似乎很常见,所以也许你应该添加适当的“社区内容”,从而改进MSDN文档。除了聚会中的文件黑客攻击之外。。。相关文章,似乎exec不能很好地处理exec。事实上,有些人要求改进msbuildextensions中的版本。你想对exec做什么?也许有一个更简单的方法来完成你正在尝试的任何事情。例如,可以从MSBuild.ExtensionPack.Framework.DateAndTime任务中获取日期时间值。如果您确实需要此功能,我认为构建自定义msbuild任务将是最好的选择。等我有时间的时候,我会试着做一个,然后把它贴在这里。这个链接使用Oops,是的。位于:此选项适用于由Microsoft Build Tools 2013安装的MSBuild 12:@AviCherry您可以在回答中而不是在注释中包含指向文档的链接吗?你能在2012年TFS团队建设的背景下实现这一点吗?很好的发现,@AviCherry!Exec任务本身()的文档中缺少ConsoleToMSBuild ConsoleOutput,加上Futurama参考的1,这是多么大的疏忽啊。还有,对于伟大的解决方案;)虽然我的自定义任务是python脚本,但我觉得MSBuild更像是一种结构化的方式,可以将信息传递到输出/错误控制台。虽然我确实觉得这比批处理文件高出了一步,但我知道这是从您出现此问题时开始的,但我只是让同样的事情发生了,并通过在根元素中设置ToolsVersion=“12.0”解决了它。。希望这能有所帮助:)
<Exec ... ConsoleToMSBuild="true">
  <Output TaskParameter="ConsoleOutput" ItemName="OutputOfExec" />
</Exec>