MSBuild 复制或创建文件(如果不存在) [英] MSBuild copy or create file if not exists

查看:48
本文介绍了MSBuild 复制或创建文件(如果不存在)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的要求,即在项目目录中创建一个名为 user.config 的文件,但前提是该文件尚不存在.

I have a simple requirement to create a file in the project directory called user.config, but only if it doesn't exist already.

第一次尝试:

  <Target Name="BeforeBuild">
    <ItemGroup>
      <Line Include="line01"><Text>&lt;appSettings&gt;&lt;/appSettings&gt;</Text></Line>
      <LineText Include="%(Line.Text)" />
    </ItemGroup>
    <WriteLinesToFile File="user.config" Lines="@(LineText)" Overwrite="false" />
  </Target>

不起作用,因为它附加到文件

第二次尝试:

  <Target Name="BeforeBuild">
    <CreateItem Include="user_example.config">
      <Output ItemName="ItemsThatNeedToBeCopied" TaskParameter="Include" />
    </CreateItem>
    <Copy SourceFiles="@(ItemsThatNeedToBeCopied)" DestinationFolder="$(ProjectDir)" Condition="!Exists('%(RootDir)%(Directory)%(Filename)%(Extension)')" />
  </Target>

不起作用,因为似乎什么也没发生,而且详细的 msbuild 输出中没有任何内容告诉我原因

任何 MSBuild 专家都应该很容易看出我做错了什么......

Any MSBuild expert should easily see what I'm doing wrong...

推荐答案

第一次尝试几乎是执行此操作的规范方法,除了缺少条件(每个 MsBuild 任务都支持)外,您基本上都做对了:

The first attempt is pretty much the canonical way to do this and you basically got it right except for the missing condition (which every MsBuild task supports):

<WriteLinesToFile File="user.config" Lines="@(LineText)" Overwrite="True"
                  Condition="!Exists('user.config')"/>

这篇关于MSBuild 复制或创建文件(如果不存在)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆