6

我正在创建一个允许应用程序部署自动化的应用程序(https://github.com/twistedtwig/AutomdatedDeployments#readme)。如何在本地或远程部署一个msbuild压缩包,而不需要IIS参与

这个想法是一切都在源代码管理,应用程序文件,应用程序配置以及IIS配置。我的应用程序允许解决方案在构建到开发机器之后自动部署(向sln/proj文件中添加后期构建setp)。它将允许CI服务器自动部署到其机器进行测试,以及CI Server将成功构建推送到QA /测试/生产服务器。我使用msdeploy时遇到的一个问题是需要事先与网站/应用程序一起设置IIS(我的应用程序试图解决这个问题)。

到目前为止,我可以通过配置文件自动创建,更新和删除应用程序池,网站和应用程序。我可以同步文件和文件夹。最后一步是使用msbuild中的/ target:package开关为Web部署创建干净的文件结构。例如,我会运行一个命令,如:

msbuild.exe myMvcSite.csproj /target:clean /target:package /p:Configuration=Release /p:_PackageTempDir=C:\websites\mySite /p:PackageLocation=C:\dropLocation\mySite.zip 

这将创建的内部文件路径一个不错的zip文件“C_C \ wbesites \ MYSITE”准备就绪(据我所知),以可以同步生产服务器。

我的问题是我如何部署这个zip文件。我希望它独立于任何IIS信息,即我只是将文件/文件夹推送到某个位置(在本地计算机上供开发人员使用,或者远程进行测试等)。应用程序池和网站等IIS的设置将分开处理。有些我已经尝试的命令(及其输出)低于:

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\Temp\deploy\installer\test\testPackage.zip" -dest:auto 
Info: Adding sitemanifest (sitemanifest). 
Error: The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v2.0'. This application requires 'v4.0'. 
Error count: 1. 

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\website\installer\testPackage.zip" -dest:contentpath=C:\temp\mytest 
Error: Source (sitemanifest) and destination (contentPath) are not compatible for the given operation. 
Error count: 1. 

我试图让它解开它具有结构中的文件的第一个命令。它似乎对应用程序池的东西感到不满,但我不希望它触及。

第二我试图解决“自动”位,但这也不高兴。

我很努力地找到关于这个过程的很多信息。

我可以看到如何实现这一目标的唯一方法是不使用msdeploy,但创建自己的任务来集成文件结构并执行文件同步我的自我(不理想)。

+0

你的第二个命令接收什么错误? –

+0

错误:源(sitemanifest)和目标(contentPath)对于给定的操作不兼容。 错误计数:1.(我的问题中的第二个代码块)。 – Jon

回答

1

我最终编码围绕这个问题,而不是能够解决它。

我把zip包:

  1. 解压一个临时位置
  2. 发现将去(通常来自archive.xml)
  3. 检查,看看最终的路径,如果我合并文件夹或干净的安装,(即我首先删除目标文件夹)。
  4. 将文件复制/推送到结束位置(通常使用msdeploy)。

我开源我解决这个:https://github.com/twistedtwig/AutomatedDeployments

相关问题