Ошибка выдачи Team Build 2008/MSBuild Copy Task при попытке скопировать файлы

В рамках автоматической сборки я очищаю каталог и копирую в него последние версии исходных файлов. Во-первых, я настроил список файлов, которые я хочу скопировать:

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

И пусть моя система знает, где находится мой сервер контроля качества:

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

Затем я удаляю и заново создаю свой каталог на целевом сервере, чтобы стереть все файлы (это сборка выжженной земли, чтобы убедиться, что мы случайно не оставляем файлы, не являющиеся частью системы управления версиями, в нашем веб-каталоге).

    <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, только (в основном) в корень.


person Bob Palmer    schedule 02.11.2010    source источник
comment
Примечание: в последних версиях MSBuild вам больше не нужно использовать CreateProperty — вы можете просто написать PropertyGroup для того же результата с более чистым синтаксисом.   -  person Jay Bazuzi    schedule 02.11.2010


Ответы (1)


В конце концов нам пришлось исправить это, переключившись на задачу XCopy.

<Exec Command="xcopy /E /R /Y \\buildMachine\Build_Temp\BuildSource
 \\QAWebServer\Websites\MySite"/>
person Bob Palmer    schedule 05.12.2010