2013-02-28 77 views
2

我正在服务器上部署一些文件。但是当我这样做时,构建会删除所有位于该位置的文件和文件夹。我不想从服务器上删除所有文件。我想从目标文件夹中排除一个文件夹(文件夹名称是Temp)。临时文件夹在删除其他文件时不应该被删除。怎么做?部署文件时出现MSBuild问题

这里是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

你好吗部署这些文件?你是使用TFS构建定义,从Visual Studio发布还是其他? – 2013-02-28 23:51:34

+0

嗨,我正在使用TFS构建定义。这是相同的代码。 – user2019295 2013-03-01 00:15:40

回答

1

?我认为它的目的是在构建过程中用于本地操作,而不是部署(因为它不会让您有机会轻松配置行为)。

我建议,而不是拷贝鲫鱼您使用下列选项

  • 非Web应用程序一个 - 使用的Robocopy: /XD dirs [dirs]...:排除目录匹配给定名称/路径。 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="&quot;$(WebDeployToolPath)&quot; -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" />

注意使用skip:skipaction='Delete..跳过删除文件和文件夹。

更新 它看起来像我已经undestood这个有点不正确的(我认为,部署AfterCompile目标happenned,但是,我现在看到的,TFS使用CoreDropBuild目标做了部署。 所以我认为,你需要的是覆盖CoreDropBuild目标描述:。here(不过,我从来没有尝试过这一点)

您可以使用Copy任务为主线的作者,或者基于的Robocopy/webdeploy走你个人喜好

+0

我没有选择在我的TFS构建“ROBOCOPY”选项。 – user2019295 2013-03-01 20:47:37

+0

好吧,您可以编辑上面粘贴的msbuild文件,对不对?请查看此链接[msdn论坛上的帖子](http://social.msdn.microsoft.com/forums/en-us/tfsbuild/thread/E996A014-0EBD-457B-BFD1-8BC518995A3F)以获取CoreDropBuild任务的信息。 – Isantipov 2013-03-04 10:08:55

+0

添加了一个带MSDN论坛链接的更新,其中的说明是通过覆盖CoreDropBuild目标来排除文件 – Isantipov 2013-03-04 10:18:52

相关问题