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

时间:2017-12-29 17:01:34

标签: asp.net visual-studio msbuild webdeploy

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

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

  

有没有办法在Visual Studio解决方案中使用MSBuild和几个脚本从多个Web项目构建单个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目标。

希望这有帮助。