【问题标题】:How to unpack an msbuild web package without deploying it to a web server?如何解压 msbuild web 包而不将其部署到 web 服务器?
【发布时间】:2018-08-14 18:01:36
【问题描述】:

当 MSBuild 打包一个 ASP.Net 网站时,它会创建一个 .zip 文件和一组 xml 文件。使用 msdeploy,我可以将该 zip 文件和一组参数替换推送到 IIS 服务器。

现在,难题来了:鉴于 Web 包 zip 文件,有没有办法将其解压缩并干净地进行令牌替换部署到 IIS?只需将其解压缩到一个文件夹并应用 SetParameters.xml 以便准备好将 robocopy 复制到文件系统位置?

Msdeploy 的参数至少可以说是不透明的。我尝试使用文件和文件夹提供程序进行部署,但不起作用。

我可以自己滚动 - 我必须对令牌替换逻辑进行逆向工程,并处理 zip 文件如何包含整个文件夹树直到驱动器根目录(而不是项目文件夹的相对路径,这是它在部署时将使用的)。所有这些都是可行的......但很烦人,我希望有更好的方法。

提前致谢。

【问题讨论】:

    标签: asp.net msbuild msdeploy


    【解决方案1】:

    跟进:最后我不得不在 powershell 中完成。该代码与公司特定的一大堆其他部署代码相关联,因此我无法将其粘贴到此处,但简而言之:

    1. 将 .zip 解压缩到一个临时位置。
    2. 递归目录,直到找到 packagetmp - 这是 zip 的实际内容。
    3. 删除网络服务器上的目标网络应用文件夹(小心 - 在此步骤之前需要进行尽可能多的健全性检查)
    4. 将 packagetmp 的内容复制到网络服务器上的目标文件夹路径。
    5. 应用使用 xpath 操作在 powershell 中进行配置转换,以提供连接字符串和日志记录端点。
    6. 重新启动应用程序池(不要跳过此步骤,否则会出现细微的故障)。
    7. 清理(删除临时文件夹)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多