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