部署文件时出现MSBuild问题
我正在服务器上部署一些文件。但当我这样做时,build将删除驻留在该位置的所有文件和文件夹。我不想删除服务器上的所有文件。我想从目标文件夹中排除一个文件夹(文件夹名称为Temp)。删除其他文件时不应删除临时文件夹。怎么做 下面是TFS构建定义部署文件时出现MSBuild问题,msbuild,Msbuild,我正在服务器上部署一些文件。但当我这样做时,build将删除驻留在该位置的所有文件和文件夹。我不想删除服务器上的所有文件。我想从目标文件夹中排除一个文件夹(文件夹名称为Temp)。删除其他文件时不应删除临时文件夹。怎么做 下面是TFS构建定义 <PropertyGroup Condition=" '$(DeployEnvironment)' == 'Dev' "> <DeployPath>\\server1\D$\temp\reports</DeployPath&
<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>
\\server1\D$\temp\reports
为什么要使用复制任务?我认为它旨在用于构建期间的本地操作,而不是部署(因为它没有给您一个轻松配置行为的机会)
我建议您使用以下选项之一,而不是复制tsak
- 非web应用程序-使用Robocopy:
:排除与给定名称/路径匹配的目录。 XF和XD可以组合使用,例如/XD dirs[dirs]…
有关使用指南,请参阅。您可以从命令行(使用ROBOCOPY c:\source d:\dest /XF *.doc *.xls /XD c:\unwanted /S
任务)运行它,也可以使用具有良好包装的 - Web应用程序:您应该在部署中使用。您可以使用MSBuild集成(VS 2010及更高版本,请参阅以获取VS2010上的设置和配置指南。注意:在VS 2012中,该集成已大大简化,但我目前没有可共享的链接),也可以从命令行运行它(在VS 2010之前):
skip:skipaction='Delete..
跳过删除文件和文件夹
更新
看起来我认为这有点不正确(我想,部署发生在编译后target,但是,正如我现在看到的,TFS使用CoreDropBuild
target进行部署)。
所以我认为,您需要的是覆盖所描述的CoreDropBuild
target:(尽管我从未尝试过)
您可以使用Copy
任务作为线程的作者,也可以根据您的个人喜好使用Robocopy/webdeploy。您是如何部署这些文件的?您使用的是TFS生成定义、从Visual Studio发布还是其他什么?您好,我使用的是TFS生成定义。这是相同的代码。我没有选项在my TFS build for“ROBOCOPY”选项中。嗯,您可以编辑上面粘贴的msbuild文件,不是吗?请查看此链接以了解覆盖CoreDropBuild任务的情况。添加了一个更新,其中包含指向MSDN论坛的链接,其中说明了如何通过覆盖CoreDropBuild目标排除文件