make an MSBuild Copy Task only copy if the source is newer regardless of size

后端 未结 2 1958
醉酒成梦
醉酒成梦 2021-02-05 17:45

I\'m currently using an msbuild file to copy some files to the public documents folder when my EXE is compiled. My current script includes this:



        
相关标签:
2条回答
  • 2021-02-05 18:05

    Your copy's conditional can be changed as follows:

        <Copy SourceFiles="%(DeploymentItems.FullPath)"
            DestinationFiles="$(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension)"
                Condition="!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) = Modified Datetime of the source file

    $([System.IO.File]::GetLastWriteTime($(PublicDocumentsFolder)%(Path)\%(RecursiveDir)%(Filename)%(DeploymentItems.Extension))) = Modified Datetime of the destination file, if it exists

    Let me know if this works or not, did not test.

    0 讨论(0)
  • 2021-02-05 18:10

    I think you may have misread the docs:

    SkipUnchangedFiles

    If true, skips the copying of files that are unchanged between the source and destination. The Copy task considers files to be unchanged if they have the same size and the same last modified time.

    http://msdn.microsoft.com/en-us/library/vstudio/3e54c37h.aspx

    0 讨论(0)
提交回复
热议问题