有没有办法在使用<message ...>?</message ...>时打印换行符

时间:2010-03-17 05:03:49

标签: msbuild

我想写<Message Text="Line1\nLine2\nLine3" />但是\ n似乎没有用。我该怎么替换?

(我在书中读到他们说要打印@和%我们使用%40和%25,所以我想应该是新行的数字。)

5 个答案:

答案 0 :(得分:32)

试试这个: <Message Text="Line1%0aLine2%0aLine3%0a" />

答案 1 :(得分:19)

CR = 0x0D或13

LF = 0x0A或10

答案 2 :(得分:1)

这是一个更好的方法。在普通的msbuild文件中使用“ Escape()”属性函数[1],如下所示:

<Message Text="$([MSBuild]::Escape('A\r\nB\r\nC\r\n')" /> 

'Escape()'属性函数应该在转义外来字符方面发挥所有作用。

[1] https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-escape-special-characters-in-msbuild?view=vs-2017https://docs.microsoft.com/en-us/visualstudio/msbuild/property-functions?view=vs-2017

答案 3 :(得分:0)

将多行消息放在一个属性中,然后在消息文本中使用该属性。(至少适用于 VisualStudio 2019 的 MSBuild)

    <PropertyGroup>
      <Property>
        <MyMultilineMessage>

Lorum ipsum...
        </MyMultilineMessage>
      </Property>
    </PropertyGroup>

    <Message Importance="High" Text="$(MyMultilineMessage)"/>

这也适用于 Error 元素。

编辑:在对缺少 PropertyGroup 的评论后修改了上面的 XML 示例。

答案 4 :(得分:0)

您可以将这些行放入一个项目组

<ItemGroup>
      <Lines Include="Line 1 " />
      <Lines Include="Line 2 " />
      <Lines Include="Line 3 " />
</ItemGroup>

<Message Text="%(Lines.Identity)"/>