如何防止MSDeploy删除项目中的额外文件夹?

30

我正在使用Team City中的MSBuild运行程序将我的项目构建并部署到临时环境中。一切都很完美,除了它一直在删除根目录中的代码库文件夹。

在Visual Studio 2010中,在发布配置文件对话框中有一个复选框,上面写着“保留目标上多余的文件(不要删除)”

是否有办法在MSBuild中实现同样的功能呢?

<Target Name="Deploy" DependsOnTargets="Build;Test">
        <MSBuild Projects="MyProject.sln" Properties="Configuration=$(Configuration); username=username; password=password; DeployOnBuild=True; DeployTarget=MSDeployPublish; MSDeployPublishMethod=WMSVC; MSDeployServiceUrl=https://DEVWEB01:8172/MsDeploy.axd; DeployIISAppPath=MyProject.$(Configuration); AllowUntrustedCertificate=True;"/>
</Target>
1个回答

53

找到答案了!

您需要做的就是将以下属性添加到“Properties”属性中:

SkipExtraFilesOnServer=True;


4
天啊,我已经花了一整天时间尝试使用-enableRule:DoNotDeleteRule(这是我可以传递到MSDEPLOY.exe的参数)来使它正常工作,但是TFS无法接受。我只是在TFS构建定义中的MSBuildArguments中添加了/p:SkipExtraFilesOnServer=True,然后就成功了!非常感谢 :-) - Philippe
你知道这个配置参数是否也可以通过环境变量来设置吗?在TeamCity中,我目前使用环境变量来处理诸如配置和部署路径之类的事情。这些似乎被写入了SetParameters.xml文件中,但我不知道为什么或何时会这样做。 - diegohb
7
有没有一种方法可以按文件夹添加而不是全局添加? - Mike Cole
@MikeCole 我不知道,除非你将 MSDeploy 同步文件夹逐个文件夹地拆分。 - efisher
当将其添加到MSBuild属性中时,Web Deploy在某种程度上会忽略它。 - spankmaster79
1
我曾使用Bamboo,遇到了一些困难,有很多答案基本上都是相同的,还会混淆MSBuild和MSDeploy。所以这里重要的部分是在MSBuild.exe部分使用/p:SkipExtraFilesOnServer=True;参数,然后在调用MSDeploy.exe时使用-EnableRule:DoNotDeleteRule,两者结合起来将阻止目标服务器上的文件被删除。 - a4bike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接