Msbuild WebDeploy:更改Web发布管道中的包输出文件夹

Msbuild WebDeploy:更改Web发布管道中的包输出文件夹,msbuild,msdeploy,webdeploy,Msbuild,Msdeploy,Webdeploy,我有一个包含多个webapp项目的Visual Studio解决方案。构建应该为每个项目创建一个web包。web包最终应位于如下文件夹结构中: $(Outputfolder) | +-- Web | +-- <name package 1> | | | +-- ... package files ... | +-- <name package 2> | | | +-- ... package

我有一个包含多个webapp项目的Visual Studio解决方案。构建应该为每个项目创建一个web包。web包最终应位于如下文件夹结构中:

$(Outputfolder)
|
+-- Web
    |
    +-- <name package 1>
    |   |
    |   +-- ... package files ...
    |
    +-- <name package 2>
    |   |
    |   +-- ... package files ...
    |
    +-- ...
    |
$(Outputfolder)
|
+--网
|
+-- 
|   |
|   +-- ... 包文件。。。
|
+-- 
|   |
|   +-- ... 包文件。。。
|
+-- ...
|
为了更改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 Projects="@(ItemToBuild)"
         Targets="Build"
         Properties="Configuration=$(Configuration);
                     Platform=$(Platform);
                     DeployOnBuild=True;
                     DeployTarget=Package;
                     OutFolder=$(OutFolder)" />

$(OutFolder)Web\Webapp1\
我就是这样称呼MSBuild的。我只需将输出文件夹作为属性移交:

<?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 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>

$(OutFolder)Web\$(默认MSDeployDestinationApplicationName)\
不幸的是,属性DefaultMSDeployDestinationApplicationName似乎为空。包文件最终位于Web文件夹中。我猜在读取.wpp.targets文件时,尚未定义DefaultMSDeployDestinationApplicationName属性


有人知道更好的位置来定义属性DefaultPackageOutputDir吗?

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

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

你解决过这个问题吗?不,我没办法解决。最后我换成了假的。我知道了——见下文。