WriteLinesToFile 任务

将指定项的路径写入指定的文本文件。

任务参数

下表描述了 WriteLinestoFile 任务的参数。

参数 说明
File 必选 ITaskItem 参数。

指定要将项写入到的文件。
Lines 可选 ITaskItem[] 参数。

指定要写入到文件的项。 默认为空列表。
Overwrite 可选 Boolean 参数。

如果为 true,该任务覆盖文件中的任何现有内容。 默认值为 false
Encoding 可选 String 参数。

选择字符编码,例如“Unicode”。 默认值为 UTF-8。 另请参阅 Encoding
WriteOnlyWhenDifferent 可选 Boolean 参数。

如果为 true,便会指定目标文件(若有),并先读取它来与写入的任务进行比较。 如果完全相同,此文件就不会写入到磁盘中,并且会保留时间戳。 默认值为 false

备注

如果 Overwritetrue,创建一个新文件,向其中写入内容,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 如果 Overwritefalse会将内容追加到文件中,如果目标文件还不存在则创建该文件。

除上面列出的参数外,此任务还从 TaskExtension 类继承参数,后者自身继承自 Task 类。 有关这些其他参数的列表及其说明的信息,请参阅 TaskExtension 基类

示例

以下示例使用 WriteLinesToFile 任务,将 MyItems 项集合中项的路径写入到 MyTextFile 项集合指定的文件中。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <MyTextFile Include="Items.txt"/>
        <MyItems Include="*.cs"/>
    </ItemGroup>

    <Target Name="WriteToFile">
        <WriteLinesToFile
            File="@(MyTextFile)"
            Lines="@(MyItems)"
            Overwrite="true"
            Encoding="Unicode"/>
    </Target>

</Project>

在此示例中,我们使用具有嵌入换行符的属性来编写具有多行的文本文件。 如果 Lines 中的条目嵌入了换行符,则新行将包含在输出文件中。 由此,可引用多行属性。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <Target Name="WriteLaunchers" AfterTargets="CopyFilesToOutputDirectory">
      <PropertyGroup>
        <LauncherCmd>
@ECHO OFF
dotnet %~dp0$(AssemblyName).dll %*
        </LauncherCmd>
      </PropertyGroup>

      <WriteLinesToFile
        File="$(OutputPath)$(AssemblyName).cmd"
        Overwrite="true"
        Lines="$(LauncherCmd)" />
  </Target>
</Project>

请参阅