从多个 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
目标。
希望对您有所帮助。
我有一个适用于很多 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
目标。
希望对您有所帮助。