从多个 Web 项目构建单个 Web 部署包

Build a single web deploy package from multiple web projects

我有一个适用于很多 Web 项目 (80+) 的解决方案。我正在使用 WDP 将我的项目部署到环境中,因此我有一个脚本可以为每个项目构建一个 Web 部署包,然后发布每个包。

部署每个包时不会删除已经存在的内容,并且每个包都可以覆盖重复文件。它有效,但部署速度很慢。

我强烈怀疑拥有一个包含所有文件的包会快得多,因为从它的外观来看,很多时间都花在了与服务器的连接设置上,而没有太多时间花在了服务器连接上。部署本身(可能是因为很多文件没有更新)

有没有办法从 visual studio 解决方案中的多个 Web 项目或使用 MSBuild 和几个脚本构建单个 WDP?

谢谢

Is there a way to build a single WDP from multiple web projects in visual studio solution or using MSBuild and a couple of scripts?

因为你有一个为每个项目构建一个 web 部署包的脚本,你可以尝试将这些项目部署到本地文件夹,你可以认为这是一个“中间发布文件夹”。从那里你可以构建一个 zip 任务,将所有包压缩到一个 zip 文件,然后 publish/copy 这个 zip 文件直接发布。

为此,您可以使用以下代码创建一个 .csproj 文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <OutputType>Library</OutputType>
  </PropertyGroup>

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

  <Target Name="Zip" AfterTargets="Build">
    <CreateItem Include="YourLocalPublishFolder\*.*" >
            <Output ItemName="ZipFiles" TaskParameter="Include"/>
    </CreateItem>
    <Zip ZipFileName="YourZipFile.zip" WorkingDirectory="YourPublishFolder" Files="@(ZipFiles)" />

有了这个.csproj文件,所有.zip都压缩成一个包到publish文件夹,不需要每个项目都发布到publish文件夹。

注意:需要将MSBuildTasks.targets导入.csproj文件,其中包含Zip目标。

希望对您有所帮助。