【问题标题】: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目标。
希望这会有所帮助。