Web部署:在Web发布管道中更改包输出文件夹

时间:2015-09-03 13:18:38

标签: msbuild msdeploy webdeploy

我有一个包含多个webapp项目的Visual Studio解决方案。构建应该为每个项目创建一个Web包。 Web包最终应该在这样的文件夹结构中结束:

$(Outputfolder)
|
+-- Web
    |
    +-- <name package 1>
    |   |
    |   +-- ... package files ...
    |
    +-- <name package 2>
    |   |
    |   +-- ... package files ...
    |
    +-- ...
    |

为了更改Web包的目标文件夹,我在每个Web应用程序项目中添加了一个.wpp.targets文件。这里我调整了DefaultPackageOutputDir属性:

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <DefaultPackageOutputDir Condition=" '$(DefaultPackageOutputDir)'=='' ">$(OutFolder)Web\Webapp1\</DefaultPackageOutputDir>
  </PropertyGroup>

</Project>

这就是我如何调用MSBuild。我只是将输出文件夹作为属性移交:

<MSBuild Projects="@(ItemToBuild)"
         Targets="Build"
         Properties="Configuration=$(Configuration);
                     Platform=$(Platform);
                     DeployOnBuild=True;
                     DeployTarget=Package;
                     OutFolder=$(OutFolder)" />

这样做但我并不完全满意。我想让构建更加通用。令我困扰的是,我必须明确地命名webapp。我的想法是改为使用属性DefaultMSDeployDestinationApplicationName:

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <DefaultPackageOutputDir Condition=" '$(DefaultPackageOutputDir)'=='' ">$(OutFolder)Web\$(DefaultMSDeployDestinationApplicationName)\</DefaultPackageOutputDir>
  </PropertyGroup>

</Project>

不幸的是,属性DefaultMSDeployDestinationApplicationName似乎是空的。包文件最终在Web文件夹中。我想在重新加载.wpp.targets文件时尚未定义属性DefaultMSDeployDestinationApplicationName。

有人知道更好的地方来定义属性DefaultPackageOutputDir吗?

1 个答案:

答案 0 :(得分:0)

我可以通过为MsBuild指定以下选项来更改Web项目的输出目录:

/p:OutDir="$(build.artifactstagingdirectory)\$(BuildConfiguration)" /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true