В рамках автоматической сборки я очищаю каталог и копирую в него последние версии исходных файлов. Во-первых, я настроил список файлов, которые я хочу скопировать:
<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, только (в основном) в корень.
CreateProperty
— вы можете просто написатьPropertyGroup
для того же результата с более чистым синтаксисом. - person Jay Bazuzi   schedule 02.11.2010