如何使用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>