无法将web包部署到临时文件夹?

时间:2012-02-26 03:20:09

标签: asp.net msbuild msdeploy

我们有一个Asp.Net网络应用程序,我们正试图伪部署到一个文件夹,我开始认为微软很疯狂 - 为什么让WAP这么做很难“本地文件系统”部署为MSBuild的一部分?

我可以用这个构建:

msbuild .\SubSite.csproj "/p:Platform=AnyCPU;Configuration=Release" /t:Package

获得一个很好的package.zip,我可以部署到一个网站......

但是,我的解决方案中有两个项目,我需要先将它们合并到一起,所以我想将这两个软件包部署到一个文件夹中,然后重新打包该文件夹。尽管technet documentation上有to the contrary,但似乎无法做到:

msdeploy -verb:sync -source:package=.\SubSite.zip -dest:contentPath=.\Www\SubSite

因为你收到错误:

  

源(sitemanifest)和目标(contentPath)与给定操作不兼容。

有没有人建议我如何在不手动从“PackageTmp”文件夹中复制文件的情况下将两个网站相互部署?我的意思是,我知道我可以skip zipping the package and manually copy the files out这样做,但是我不满意必须创建一个自定义目标,并且没有其他方法可以找到只是为了做一些应该构建的东西英寸

1 个答案:

答案 0 :(得分:1)

我们最终弄清楚如何做到这一点,但我并不高兴; - )

基本上,(如上所述),您可以调用msbuild,并将目标设置为_WPPCopyWebApplication。您也可以在执行此操作时指定/覆盖WebProjectOutputDir属性。像这样的东西(其中$ {name}是我们正在使用的变量)

msbuild ${SourcePath}\Www\UI\UI.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot" "/t:_WPPCopyWebApplication"
msbuild ${SourcePath}\Www\Mobile\Mobile.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\Mobile" "/t:_WPPCopyWebApplication"
msbuild ${SourcePath}\Www\Service\WebService.csproj "/p:Platform=AnyCPU;Configuration=Release;WebProjectOutputDir=${OutputPath}\AppRoot\WebServices" "/t:_WPPCopyWebApplication"

然后我们可以在单独的步骤中打包整个“AppRoot”。