【问题标题】:Team Build 2008/MSBuild Copy Task throwing error when attempting to copy filesTeam Build 2008/MSBuild Copy Task 在尝试复制文件时抛出错误
【发布时间】:2016-02-13 05:54:08
【问题描述】:

作为自动构建的一部分,我清除了一个目录,并将最新版本的源文件复制到该目录。首先,我设置了我希望复制的文件列表:

    <CreateItem
         Include="\\BuildServer\Build_Temp\SomeRootDirectory\**\*">
        <Output
           TaskParameter ="Include"
           ItemName ="FilesToCopy"/>
    </CreateItem>

并让我的系统知道我的 QA 服务器的位置:

    <CreateProperty
          Value="\\QAWebServer\Websites\MySite">
        <Output
            TaskParameter="Value"
            PropertyName ="MyDropLocation"/>
    </CreateProperty>

然后,我在目标服务器上删除并重新创建我的目录以清除所有文件(这是一个焦土构建,以确保我们不会意外将不属于源代码控制的文件留在我们的 Web 目录中)。

    <RemoveDir Directories="\\QAWebServer\Websites\MySite"  />
    <MakeDir Directories="\\QAWebServer\Websites\MySite"  />

最后,我执行了一个复制任务:

    <Copy
            SourceFiles="@(FilesToCopy)"
            DestinationFiles="@(FilesToCopy->'$(MyDropLocation)\%(RecursiveDir)%(Filename)%(Extension)')"
            OverwriteReadOnlyFiles="True"/>

然后,当它尝试复制文件时,我得到了结果错误。有趣的是,有些成功,有些没有(在这种情况下,它看起来几乎完全位于我刚刚在上面创建的目录的根目录中):

  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Import.swf" to "\\QAWebServer\Websites\MySite\Import.swf". Access to the path '\\QAWebServer\Websites\MySite\Import.swf' is denied.
  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Incomplete.swf" to "\\QAWebServer\Websites\MySite\Incomplete.swf". Access to the path '\\QAWebServer\Websites\MySite\Incomplete.swf' is denied.
  C:\Build_Temp\QABuild\BuildType\TFSBuild.proj(690,3): error MSB3021: Unable to copy file "\\BuildServer\Build_Temp\SomeRootDirectory\Index.html" to "\\QAWebServer\Websites\MySite\Index.html". Access to the path '\\QAWebServer\Websites\MySite\Index.html' is denied.

我已经验证了对文件系统的访问权限(每个人都可以访问创建/修改/等),并且将文件添加到 \QAWebServer\Websites\MySite 上的子目录结构没有问题,只是(主要)根。

【问题讨论】:

  • 附注:在最新版本的 MSBuild 中,您不再需要使用 CreateProperty - 您可以使用更简洁的语法编写 PropertyGroup 以获得相同的结果。

标签: tfs msbuild tfsbuild


【解决方案1】:

我们最终不得不通过切换到 XCopy 任务来解决这个问题。

<Exec Command="xcopy /E /R /Y \\buildMachine\Build_Temp\BuildSource
 \\QAWebServer\Websites\MySite"/>

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2011-01-16
    • 2013-06-04
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多