我有一个我想使用MSDeploy部署的Web应用程序。 我有一个运行MSBuild的Nant脚本,并将属性DeployOnBuild设置为true。它创建了我在服务器上使用的部署包。
我想要做的是避免MSDeploy在部署新文件之前删除目标文件夹的内容。我可以手动添加-enableRule:DoNotDeleteRule到我的命令行,但我希望MSDeploy手动完成。我真的需要一些帮助。
我正在使用Visual Studio 2010,如果有办法从那里进行此设置,那将是最佳选择。如果从南特那里做到这一点也很棒。
要点: 通过Nant使用MSBuild创建的部署包默认情况下应该具有标志-enableRule:DoNotDeleteRule。
答案 0 :(得分:3)
在项目或共享导入文件中将属性$(SkipExtraFilesOnServer)设置为值“true”,
<PropertyGroup>
<SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
</PropertyGroup>
或在Nant的命令行中,
/p:SkipExtraFilesOnServer=true
请参阅文件Microsoft.Web.Publishing.targets(搜索“MSDeploy”)以获取更多选项。
答案 1 :(得分:1)
我们最终使用Nant命令创建bat文件,然后我们将-enableRule添加到该文件中的命令:
<echo file="..\..\Packages\${stage}\${project::get-name()}.${stage}.Run.TestDeploy.bat">
%CD%\${project::get-name()}.${stage}.deploy.cmd /T -enableRule:DoNotDeleteRule
PAUSE
</echo>
<echo file="..\..\Packages\${stage}\${project::get-name()}.${stage}.Run.REALDEPLOY.bat">
%CD%\${project::get-name()}.${stage}.deploy.cmd /Y -enableRule:DoNotDeleteRule
PAUSE
</echo>
在MSDeploy中使用/ T和/ Y标志来了解您是否正在测试脚本(/ T),或者您是否正在运行它(/ Y)。
这是一种解决方法,但我们对此感到满意。