如何在不将其部署到 Web 服务器的情况下解压缩 msbuild Web 包?
How to unpack an msbuild web package without deploying it to a web server?
当 MSBuild 打包 ASP.Net 网站时,它会创建一个 .zip 文件和一组 xml 文件。使用 msdeploy,我可以将该 zip 文件和一组参数替换推送到 IIS 服务器。
现在,难题来了:给定 Web 包 zip 文件,有没有办法将其解压缩并干净地进行令牌替换 而无需 部署到 IIS?只需将其解压缩到一个文件夹并应用 SetParameters.xml
以便它准备好自动复制到文件系统位置?
Msdeploy 的参数至少可以说是不透明的。我试过使用文件和文件夹提供程序进行部署,但这不起作用。
我可以自己动手 - 我必须对令牌替换逻辑进行逆向工程并处理 zip 文件如何包含整个文件夹树一直到驱动器根目录(而不是项目的相对路径文件夹,这是它在部署时将使用的文件夹)。所有这些都是可行的...但非常烦人,我希望有更好的方法。
提前致谢。
跟进:最后我不得不在 powershell 中完成。该代码与公司特定的一大堆其他部署代码相关联,因此我无法将其粘贴到此处,但简而言之:
- 将 .zip 解压缩到一个临时位置。
- 递归目录直到找到 packagetmp - 这是 zip 的实际内容。
- 删除网络服务器上的目标网络应用程序文件夹(小心 - 在此步骤之前需要进行尽可能多的健全性检查)
- 将 packagetmp 的内容复制到网络服务器上的目标文件夹路径。
- 应用使用 xpath 操作在 powershell 中进行配置转换以提供连接字符串和日志记录端点。
- 重新启动应用程序池(不要跳过此步骤,否则会出现细微的故障)。
- 清理(删除临时文件夹)。
当 MSBuild 打包 ASP.Net 网站时,它会创建一个 .zip 文件和一组 xml 文件。使用 msdeploy,我可以将该 zip 文件和一组参数替换推送到 IIS 服务器。
现在,难题来了:给定 Web 包 zip 文件,有没有办法将其解压缩并干净地进行令牌替换 而无需 部署到 IIS?只需将其解压缩到一个文件夹并应用 SetParameters.xml
以便它准备好自动复制到文件系统位置?
Msdeploy 的参数至少可以说是不透明的。我试过使用文件和文件夹提供程序进行部署,但这不起作用。
我可以自己动手 - 我必须对令牌替换逻辑进行逆向工程并处理 zip 文件如何包含整个文件夹树一直到驱动器根目录(而不是项目的相对路径文件夹,这是它在部署时将使用的文件夹)。所有这些都是可行的...但非常烦人,我希望有更好的方法。
提前致谢。
跟进:最后我不得不在 powershell 中完成。该代码与公司特定的一大堆其他部署代码相关联,因此我无法将其粘贴到此处,但简而言之:
- 将 .zip 解压缩到一个临时位置。
- 递归目录直到找到 packagetmp - 这是 zip 的实际内容。
- 删除网络服务器上的目标网络应用程序文件夹(小心 - 在此步骤之前需要进行尽可能多的健全性检查)
- 将 packagetmp 的内容复制到网络服务器上的目标文件夹路径。
- 应用使用 xpath 操作在 powershell 中进行配置转换以提供连接字符串和日志记录端点。
- 重新启动应用程序池(不要跳过此步骤,否则会出现细微的故障)。
- 清理(删除临时文件夹)。