【问题标题】:Can't msdeploy web package to temporary folder?无法将 web 包 msdeploy 到临时文件夹?
【发布时间】:2012-02-26 03:20:09
【问题描述】:

我们有一个 Asp.Net Web 应用程序,我们正试图将其伪部署到一个文件夹中,我开始认为 Microsoft 疯了——为什么要让 WAP 做一个“本地文件系统”部署为 MSBuild 的一部分?

我可以用这个构建:

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

并获得一个不错的 package.zip,我可以将其部署到网站...

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

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

因为你得到了错误:

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

有没有人建议我如何在不手动将文件从“PackageTmp”文件夹中复制出来的情况下,将两个站点部署到另一个站点中?我的意思是,我知道我可以通过 skip zipping the package and manually copy the files out 来执行此操作,但我对必须创建自定义目标不满意,并且没有其他方法可以找到它,只是为了做一些应该内置的事情。

【问题讨论】:

  • 确实,这里的答案(即使是“那不可能”)会很棒。

标签: asp.net msbuild msdeploy


【解决方案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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多