有没有一种方法可以从msbuild获取属性的值?

4

如果我使用命令行运行类似这样的msbuild:msbuild myproject.dproj /t:Clean;Build /p:Config=Release /p:Platform=Win32,有没有一种方法让命令行获取该命令实际生成的exe文件的路径值?


我认为属性可以通过 $() 访问,例如 $(MSBuildToolsPath),并且可以在 msbuild xml 中使用。 - npocmaka
我知道属性可以这样使用,但是命令行是否有一种方法可以读取给定 $(Platform)\$(configuration) 的特定值(即 DCC_ExeOutput)? - R. J.
我不确定你需要什么。你想从文件/环境变量中读取某些属性并在命令行中使用它吗? - npocmaka
我想读取输出路径,就像当msbuild传递不同的平台/配置值时所看到的那样。MSBuild知道从命令行或项目选项中传递给它的规范将exe放置在何处。是否有任何方法将msbuild所知道的内容传递给命令行? - R. J.
1个回答

7

你应该编写一个自定义目标来获取该值。

首先,将此目标添加到 myproject.dproj 中:

<Target Name="GetOutputValue">  
<Message Importance="high" Text="$(DCC_ExeOutput)"></Message>
</Target>

然后,直接使用这个命令来调用GetOutputValue目标以获取该值。
msbuild myproject.dproj /t:GetOutputValue

enter image description here


谢谢。在我的搜索中,我遇到了像您描述的内联任务,并最终使用了此处描述的内置WriteLinesToFile任务:https://learn.microsoft.com/en-us/visualstudio/msbuild/writelinestofile-task?view=vs-2019 - R. J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接