【问题标题】:Customize properties for MSDeploy via Nant or VS2010通过 Nant 或 VS2010 自定义 MSDeploy 的属性
【发布时间】:2011-08-04 10:49:26
【问题描述】:

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

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

我正在使用 Visual Studio 2010,如果有办法从那里进行此设置,那将是最佳选择。如果可以从 Nant 做到这一点,那也很棒。

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

【问题讨论】:

    标签: visual-studio-2010 msbuild nant msdeploy


    【解决方案1】:

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

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

    或在 Nant 的命令行中,

    /p:SkipExtraFilesOnServer=true
    

    查看文件 Microsoft.Web.Publishing.targets(搜索“MSDeploy”)了解更多选项。

    【讨论】:

    • 感谢您的意见。我们确实尝试了这个解决方案,但不幸的是它不起作用。我将发布有关我们如何解决此问题的答案。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      相关资源
      最近更新 更多