【问题标题】:MSDeploy publish via MSBuild copies all files instead of syncing filesMSDeploy 通过 MSBuild 发布复制所有文件而不是同步文件
【发布时间】:2013-03-27 15:08:25
【问题描述】:

正如 Hanselman 在他的 Tiny Happy Features #3 中提到的那样,我设置了以下构建目标来进行部署,并且在许多其他地方也提到了我认为推荐的方法:

msbuild my_web_application.csproj /p:Configuration=Production;
                                     DeployOnBuild=true;
                                     PublishProfile=Production;
                                     VisualStudioVersion=11.0;
                                     AllowUntrustedCertificate=true;
                                     AuthType=NTLM

这完成了这项工作,并替换了我之前通过在命令行上调用 ms deploy 的部署步骤:

msdeploy.exe" -source:package="c:\source_to_my_web_application.zip" -dest:auto,my_server_name,includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"c:\source_to_my_web_application\Package.SetParameters.xml"

我在这两种方法中看到的最大区别是命令行调用只会推送有修改的文件,而 msbuild 调用每次都会推送整个 Web 应用程序。

有没有办法让 msbuild 版本执行“同步”行为,就像直接调用 msdeploy 对我所做的那样?

【问题讨论】:

    标签: visual-studio-2012 web-deployment msdeploy msbuild-4.0


    【解决方案1】:

    据我所知,从包(例如为这个特定的 MSBuild 命令创建的包)同步会发现与其尝试部署的本地工作副本相关的差异。

    如果我重新签出,然后构建和部署,它将发布整个 Web 应用程序。

    如果我对该工作副本进行清理和重建,它只会发布重建的 dll。

    如果我在此基础上进行构建,它只会发布已转换的 web.config 文件和其他一些我无法押韵或推理的随机 dll。

    我想,最重要的是,在我们的 CI 服务器设置中,应该假设所有文件都将发布到服务器,如果发布的文件少于这个,那就是带宽奖励。

    附带说明一下,我在执行其他正常的 ms 部署命令时也遇到了随机的、不可靠的 404 错误。它们似乎是断断续续的,并且在我自己的工作站、我的同事和 CI 服务器之间可能会有所不同,因此 MS Deploy 服务将返回 404 或在每次连续调用的几秒钟内正常执行。我为此类行为找到的解决方案包括从重新启动 Visual Studio 到卸载和重新安装各种组件,并确保您以正确的顺序进行操作,并且仅在任何以“ary”结尾的月份的第三周的第二个星期二进行。 ..

    对我来说,这个工具是粗略的,如果你能得到一个以任何可靠性工作的设置,那就是一个奇迹,你不应该再碰它,向硅神祈祷它保持不变方式。

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      相关资源
      最近更新 更多