WriteLinesToFile 任务
将指定项的路径写入指定的文本文件。
任务参数
下表描述了 WriteLinestoFile
任务的参数。
参数 | 说明 |
---|---|
File |
必选 ITaskItem 参数。 指定要将项写入到的文件。 |
Lines |
可选 ITaskItem[] 参数。指定要写入到文件的项。 默认为空列表。 |
Overwrite |
可选 Boolean 参数。如果为 true ,该任务覆盖文件中的任何现有内容。 默认值为 false 。 |
Encoding |
可选 String 参数。选择字符编码,例如“Unicode”。 默认值为 UTF-8。 另请参阅 Encoding。 |
WriteOnlyWhenDifferent |
可选 Boolean 参数。如果为 true ,便会指定目标文件(若有),并先读取它来与写入的任务进行比较。 如果完全相同,此文件就不会写入到磁盘中,并且会保留时间戳。 默认值为 false 。 |
备注
如果 Overwrite
为 true
,创建一个新文件,向其中写入内容,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 如果 Overwrite
为 false
会将内容追加到文件中,如果目标文件还不存在则创建该文件。
除上面列出的参数外,此任务还从 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>