我正在服务器上部署一些文件。但是当我这样做时,build正在删除驻留在该位置的所有文件和文件夹。我不想删除服务器上的所有文件。我想从目标文件夹中排除一个文件夹(文件夹名称为Temp)。删除其他文件时不应删除Temp文件夹。怎么做?
这是TFS构建定义
<PropertyGroup Condition=" '$(DeployEnvironment)' == 'Dev' ">
<DeployPath>\\server1\D$\temp\reports</DeployPath>
</PropertyGroup>
<Target Name="CoreCompileSolution" />
<Target Name="AfterCompile">
<Message Importance ="high" Text="Solution Root: $(SolutionRoot)" />
<Message Importance ="high" Text="Out Dir: $(OutDir)" />
<Copy SourceFiles="@(RPTFiles)" DestinationFolder="$(OutDir)_PublishedWebsites\Reports\" />
</Target>
<Target Name="AfterDropBuild" >
<CreateItem Exclude="$(DeployPath)\Temp*.*">
<Output ItemName="PreviousDeployment" TaskParameter="Include" />
</CreateItem>
</Target>
答案 0 :(得分:1)
为什么使用复制任务?我认为它旨在用于构建期间的本地操作,而不是部署(因为它不会让您有机会轻松配置行为)。
我建议您使用以下选项之一
而不是复制tsak 非网络应用 - 使用Robocopy:
/XD dirs [dirs]...
:eXclude与给定名称/路径匹配的目录。
XF和XD可以组合使用,例如
ROBOCOPY c:\source d:\dest /XF *.doc *.xls /XD c:\unwanted /S
请参阅this link了解使用指南。您可以从命令行运行它(使用<Exec Command="" >
任务,也可以使用具有良好包装的MBuiild Community Tasksproject。
Web应用程序:您应该使用Web Deploy进行部署。您可以使用MSBuild集成(VS 2010及更高版本,请参阅this blog series以获取有关VS2010 NB上的设置和配置的指导:它在VS 2012中已经大大简化了,但我目前没有链接可以分享)或从命令行运行它(在VS 2010之前):
<Exec Command=""$(WebDeployToolPath)" -verb:sync - source:dirPath='$(MSBuildProjectDirectory)\Published\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -skip:skipaction='Delete',objectname='filePath',absolutepath='app_offline.htm' -skip:skipaction='Delete',objectname='filePath',absolutepath='logs\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='logs\\.*' -skip:skipaction='Delete',objectname='filePath',absolutepath='UserFiles\\.*' -skip:skipaction='Delete',objectname='dirPath',absolutepath='UserFiles\\.*' -verbose -allowUntrusted" />
NB使用skip:skipaction='Delete..
跳过删除文件和文件夹。
<强>更新强>
看起来我已经不知道这有点不正确(我想,部署发生在AfterCompile
目标中,但是,正如我现在看到的,TFS使用CoreDropBuild
目标来进行部署。
所以我认为,您需要的是覆盖CoreDropBuild
目标,如下所述:here。 (虽然,我从未尝试过这个)。
您可以使用Copy
任务作为主题的作者,也可以根据个人喜好使用Robocopy / webdeploy。