使用<Message...>时,是否有一种方法可以打印新行?

26

我想要写 <Message Text="Line1\nLine2\nLine3" /> 但是 \n 似乎无法正常工作。我应该用什么替换 \n 呢?

(我在书中读到,打印 @ 和 % 的方法是使用 %40 和 %25,所以我猜应该也有一个数字来表示换行符)。

5个回答

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

1
这其实是更好的答案。 - MarioDS

22

CR = 0x0D 或者 13

LF = 0x0A 或者 10


8
谢谢DaveE。我尝试了<Message Text="a%0Abb" />,它起作用并输出: a bb谢谢你。 - Nam G VU
5
这个回答有些懒惰了,为什么不包含一个完整的例子呢?实际上,答案已经在原帖评论(以及其他回答)中了。 - MarioDS
1
我本可以给出“试试看是否可行”的答案,但我更愿意解释实现帖子所需的值,并让他们自己应用。 - DaveE

1

不幸的是,这似乎不起作用。它只会打印 A\r\nB\r\nC\r\nUnescape() 也不起作用。 - Sebastian Krysmanski

1
将多行消息放入属性中(在下面的示例中称为MyMultilineMessage),然后在消息文本中使用该属性。(至少适用于VisualStudio 2019的MSBuild)
    <PropertyGroup>
      <MyMultilineMessage>

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

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

这对于Error元素同样适用。

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


你需要使用 "PropertyGroup",而不是 "Property"。 - kornman00
仍然有错,抱歉。请使用以下代码片段: .... - Ste
你说得对!现在应该已经修复了。感谢你发现这个问题! :) - Ermingol

1
你可以将这些行放入一个项目组中。
<ItemGroup>
      <Lines Include="Line 1 " />
      <Lines Include="Line 2 " />
      <Lines Include="Line 3 " />
</ItemGroup>

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

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