【问题标题】:Build a single web deploy package from multiple web projects从多个 Web 项目构建单个 Web 部署包
【发布时间】:2018-06-10 02:06:21
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

    标签: asp.net visual-studio msbuild webdeploy


    【解决方案1】:

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

    由于您有一个为每个项目构建 Web 部署包的脚本,您可以尝试将这些项目部署到本地文件夹,您可以将其视为“中间发布文件夹”。从那里您可以将所有包构建一个 zip 任务到一个 zip 文件,然后发布/复制此 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被压缩成一个包到发布文件夹,不需要每个项目都发布到发布文件夹。

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多