Visual studio 2010 通过Nant或VS2010自定义MSDeploy的属性

Visual studio 2010 通过Nant或VS2010自定义MSDeploy的属性,visual-studio-2010,msbuild,nant,msdeploy,Visual Studio 2010,Msbuild,Nant,Msdeploy,我有一个web应用程序,我想使用MSDeploy部署它。 我有一个Nant脚本,它运行MSBuild并将属性DeployOnBuild设置为true。它创建了一个我在服务器上使用的部署包 我想做的是避免MSDeploy在部署新文件之前删除目标文件夹的内容。我可以通过在命令行中添加-enableRule:DoNotDeleteRule来手动执行此操作,但我希望MSDeploy可以手动执行此操作。我真的需要一些帮助 我使用的是VisualStudio2010,如果有一种方法可以使这个设置成为最佳设置

我有一个web应用程序,我想使用MSDeploy部署它。 我有一个Nant脚本,它运行MSBuild并将属性DeployOnBuild设置为true。它创建了一个我在服务器上使用的部署包

我想做的是避免MSDeploy在部署新文件之前删除目标文件夹的内容。我可以通过在命令行中添加-enableRule:DoNotDeleteRule来手动执行此操作,但我希望MSDeploy可以手动执行此操作。我真的需要一些帮助

我使用的是VisualStudio2010,如果有一种方法可以使这个设置成为最佳设置。如果有可能在南特做这件事,那也很好

总结: 通过Nant使用MSBuild创建的部署包默认情况下应具有-enableRule:DoNotDeleteRule标志。

在项目或共享导入文件中将属性$(SkipExtraFilesOnServer)设置为值“true”

<PropertyGroup>
   <SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
</PropertyGroup>
有关更多选项,请参阅文件Microsoft.Web.Publishing.targets(搜索“MSDeploy”)。

在项目或共享导入文件中将属性$(SkipExtraFilesOnServer)设置为值“true”

<PropertyGroup>
   <SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>
</PropertyGroup>

有关更多选项,请参阅文件Microsoft.Web.Publishing.targets(搜索“MSDeploy”)。

我们使用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>

%CD%\${project::get-name()}.${stage}.deploy.cmd/T-enableRule:DoNotDeleteRule
暂停
%CD%\${project::get-name()}.${stage}.deploy.cmd/Y-enableRule:DoNotDeleteRule
暂停
MSDeploy中使用/T和/Y标志,以了解您是在测试脚本(/T),还是在实际运行脚本(/Y)


这是一个解决方案,但我们对此感到满意。

我们最终使用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>

%CD%\${project::get-name()}.${stage}.deploy.cmd/T-enableRule:DoNotDeleteRule
暂停
%CD%\${project::get-name()}.${stage}.deploy.cmd/Y-enableRule:DoNotDeleteRule
暂停
MSDeploy中使用/T和/Y标志,以了解您是在测试脚本(/T),还是在实际运行脚本(/Y)


这是一个解决方案,但我们对此感到满意。

感谢您的意见。我们确实尝试过这个解决方案,但不幸的是,它不起作用。我将发布一个关于我们如何解决这个问题的答案。谢谢你的投入。我们确实尝试过这个解决方案,但不幸的是,它不起作用。我将发布一个关于我们如何绕过这个问题的答案。