gpt4 book ai didi

c# - 无论大小如何,如果源较新,则只复制 MSBuild 复制任务

转载 作者:可可西里 更新时间:2023-11-01 08:56:30 25 4
gpt4 key购买 nike

我目前正在使用 msbuild 文件在编译我的 EXE 时将一些文件复制到公共(public)文档文件夹。我当前的脚本包括:

<Target Name="DeployToPublicDocuments"
Inputs="@(DeploymentItems)"
Outputs="$(PublicDocumentsFolder)%(Path)\%(DeploymentItems.RecursiveDir)%(DeploymentItems.Filename)%(DeploymentItems.Extension)">
<Copy SourceFiles="%(DeploymentItems.FullPath)"
DestinationFiles="$(PublicDocumentsFolder)%(Path)\%(DeploymentItems.RecursiveDir)%(DeploymentItems.Filename)%(DeploymentItems.Extension)"
Condition="!Exists('$(PublicDocumentsFolder)%(Path)\%(DeploymentItems.RecursiveDir)%(DeploymentItems.Filename)%(DeploymentItems.Extension)')" />

此代码仅在目标不存在时才复制。但是,如果我的来源较新,我想替换目的地。我该如何修改我的脚本来实现这一点?我看到 SkipUnchangedFiles 标志,但它还会比较文件大小以确定是否应覆盖目标。这不是我想要的。

最佳答案

您的副本的条件可以更改如下:

    <Copy SourceFiles="%(DeploymentItems.FullPath)"
DestinationFiles="$(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension)"
Condition="%(Filename)!='' AND (!Exists('$(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension)') OR $([System.DateTime]::Parse('%(ModifiedTime)').Ticks) &gt; $([System.IO.File]::GetLastWriteTime('$(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension)').Ticks))" />

%(ModifiedTime) = 源文件的修改日期时间

$([System.IO.File]::GetLastWriteTime($(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension))) = 已修改目标文件的日期时间(如果存在)

让我知道这是否有效,没有测试。

关于c# - 无论大小如何,如果源较新,则只复制 MSBuild 复制任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com