如何让MSBuild消息任务显示属性?

如何让MSBuild消息任务显示属性?,msbuild,Msbuild,根据,MSBuild消息任务应该能够将属性的内容输出到控制台 这可以很简单地用以下几行来说明: <Message Text=" MSBuildProjectDirectory = $(MSBuildProjectDirectory)" /> 在构建脚本中,我有一个属性,用于定义可执行文件的路径。它的定义如下: [exec] MSBuildProjectDirectory = .../somefolderpath <MyDir Condition="'$(MyDir

根据,MSBuild消息任务应该能够将属性的内容输出到控制台

这可以很简单地用以下几行来说明:

<Message Text=" MSBuildProjectDirectory  = $(MSBuildProjectDirectory)" />
在构建脚本中,我有一个属性,用于定义可执行文件的路径。它的定义如下:

[exec]    MSBuildProjectDirectory  = .../somefolderpath
<MyDir Condition="'$(MyDir)' == ''">somepath</MyDir>
<MyEXE Condition="'$(MyEXE)' == ''">$(MyDir)\somefile.exe</MyEXE>
下一行是

<Exec Command='"$(MyEXE)" /someparameter' />
…它成功执行exe,因此它显然包含一个值

值得注意的是,我对@MyEXE的使用完全是我的无知


有人知道我是如何将$MyEXE的内容打印到控制台的吗?

在我的例子中,MSBuild.exe是从控制台调用的。如果删除此步骤并直接从命令行调用MSBuild,问题就会消失

更新日期2017.02.08: 进一步研究,我发现我们的ant构建脚本使用基于正则表达式的字符串替换数组解析msbuild的控制台输出,以“有帮助地”删除“不需要的”内容


顺便说一句,我在问题中发布的输出开头的“[exec]”是由ant添加的。

无法复制,虽然没有“[exec]”部分,我在这里得到了正确的输出,这是从哪里来的?同样,您显示的msbuild无效,因为它缺少一组标记PropertyGroup/Target。我添加了那些我认为你也有它们的地方,但我不能确定。。最好显示您正在使用的完整代码,以及如何调用它。
<Message Text="TEMP START"/>
<Message Text=" MSBuildProjectDirectory  = $(MSBuildProjectDirectory)" />

<Message Text='dollar1 "$(MyEXE)"'/>
<Message Text="dollar2 '$(MyEXE)'"/>
<Message Text='dollar3 $(MyEXE)'/>
<Message Text="dollar4 $(MyEXE)"/>

<Message Text='at1 "@(MyEXE)"'/>
<Message Text="at2 '@(MyEXE)'"/>
<Message Text='at3 @(MyEXE)'/>
<Message Text="at4 @(MyEXE)"/>

<Exec Command='echo "$(MyEXE)"' />
<Exec Command='echo FOO' />

<Message Text="TEMP END"/>
[exec]   TEMP START
[exec]    MSBuildProjectDirectory  = .../somepath
[exec]   at1 ""
[exec]   at2 ''
[exec]   at3
[exec]   at4
[exec]   echo FOO
[exec]   FOO
[exec]   TEMP END
<Exec Command='"$(MyEXE)" /someparameter' />