MSbuild从文件插入属性数据

时间:2016-04-26 20:29:23

标签: c# msbuild

我正在编写一个简单的MS构建脚本来删除文件夹中我的程序未使用的所有文件。所有正在使用的文件都存储在我的.txt文件中,如下所示:

...
/media/50067/d.png
/media/12311/takeover.png
/media/18536/iprima.png
/media/26467/iab_filmstrip_as3.zip
...

是否可以逐行读取我的文本文件填充Exclude属性,以便文本文件中列出的所有文件都将被排除在删除之外?

This stack owerflow theard建议使用ReadLinesFrom文件,但在阅读msdn后我无法掌握它......

我的MS版本看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="DeleteNotUsedFiles">
        <ItemGroup>
            <Files
                Include="Desktop\media\**\*.*"
                Exclude="???"
            />
        </ItemGroup>  
        <Delete Files="@(Files)" />
    </Target>
</Project>

1 个答案:

答案 0 :(得分:1)

您需要做的就是使用ReadLinesFromFile使用文件内容填充项目,即要排除的文件的路径。然后将该ItemGroup用于Exclude属性:

<Target Name="DeleteUnusedFiles">
  <ReadLinesFromFile File="exclude.txt">
    <!-- This makes an Item 'FilesToExclude' with all lines -->
    <Output TaskParameter="Lines" ItemName="FilesToExclude"/>
  </ReadLinesFromFile>
  <ItemGroup>
    <Files Include="Desktop\media\**\*.*"
           Exclude="@(FilesToExclude)"/> <!-- Use said Item -->
  </ItemGroup>
  <Message Text="Deleting @(Files)" />
</Target>