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

Jay*_*kul 7 asp.net msbuild msdeploy

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

我可以用这个构建:

msbuild .\SubSite.csproj "/p:Platform=AnyCPU;Configuration=Release" /t:Package
Run Code Online (Sandbox Code Playgroud)

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

但是,我的解决方案中有两个项目,我需要在发布之前将它们合并,所以我想将这两个软件包部署到一个文件夹中,然后重新打包该文件夹.尽管文档 TechNet上,相反,它似乎并不可能做到:

msdeploy -verb:sync -source:package=.\SubSite.zip -dest:contentPath=.\Www\SubSite
Run Code Online (Sandbox Code Playgroud)

因为你得到错误:

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

有没有人建议我如何在不手动从"PackageTmp"文件夹中复制文件的情况下将两个站点相互部署?我的意思是,我知道我可以跳过压缩包并手动复制文件来执行此操作,但我不满意必须创建自定义目标,并且没有其他方法可以找到这样做应该内置的东西.

Jay*_*kul 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"
Run Code Online (Sandbox Code Playgroud)

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