当前位置:  开发笔记 > Android > 正文

MSBuild ReadLinesFromFile一行上的所有文本

如何解决《MSBuildReadLinesFromFile一行上的所有文本》经验,为你挑选了2个好方法。

当我在MSBUILD中的文件上执行ReadLinesFromFile并再次输出该文件时,我将所有文本放在一行上.所有Carriage返回和LineFeeds都被删除.





    



    
        
    



    


    



我从文件中得到通常看起来像这样的文本

- New Deployment Tool for BLAH

- Random other stuff()""

像这样出来

- New Deployment Tool for BLAH;- Random other stuff()""

我知道ReadLinesFromFile的代码将一次拉取一行数据并去除回车.

有没有办法把它们放回去?所以我的电子邮件看起来格式很好?

谢谢



1> Todd..:

这里的问题是你ReadLinesFromFile以一种不打算的方式使用任务.

ReadLinesFromFile任务从文本文件中
读取项目列表.

因此,它不只是从文件中读取所有文本,而是从文件中读取单个项目并返回ITaskItems的项目组.每当使用@()语法输出项目列表时,您将获得一个单独的列表,默认值为分号.此示例说明了此行为:




    
        
        
        



        



输出看起来像这样:

  ItemGroup Color: Red;Blue;Green

因此,尽管您的问题的最佳解决方案是编写一个MSBuild任务,将文件作为字符串读入属性而不是项目列表,这实际上不是您要求的.你问是否有办法将它们放回去,并且使用了MSBuild Transforms.

转换用于从另一个列表创建一个列表,并且还可以使用自定义分隔符进行转换.所以答案是将使用的ReadItemsFromFile列表转换为另一个带换行符的列表.这是一个例子:




    
        
    

    
        
            
        

        
        
    


Test.text看起来像:

Red
Green
Blue

输出看起来像这样:

[C:\temp]:: msbuild test.proj
Microsoft (R) Build Engine Version 3.5.21022.8
[Microsoft .NET Framework, Version 2.0.50727.1433]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 11/8/2008 8:16:59 AM.
Project "C:\temp\test.proj" on node 0 (default targets).
  FileContents: Red;Green;Blue
  FileContents Transformed: Red
Green
Blue
Done Building Project "C:\temp\test.proj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:00.03

这里发生了两件事.

@(FileContents->'%(Identity)', '%0a%0d')   

我们使用相同的值(Identity)但是使用自定义分隔符将列表从一种类型转换为另一种类型'%0a%0d'

我们正在使用MSBuild Escaping来转义换行符(%0a)和回车符(%0d)


这正是我要找的感谢老兄!! 我知道我可以编写一个自定义任务,但如果我可以使用手头的语法,我宁愿没有关于这个地方的一堆自定义任务.再次感谢!!:-)

2> user75810..:

如果您使用的是MSBuild 4.0,则可以执行以下操作来获取文件的内容:

$([System.IO.File]::ReadAllText($FilePath))


真棒!对于MSBuild中允许的其他有用的东西,请参阅http://blogs.msdn.com/b/visualstudio/archive/2010/04/02/msbuild-property-functions.aspx
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有