我有很多网络项目(80+)的解决方案。我使用WDP将我的项目部署到环境中,因此我有一个脚本为每个项目构建一个Web部署包,然后发布每个包。
部署每个包而不删除已存在的包,每个包都可以覆盖重复的文件。它可以工作,但部署速度很慢。
我强烈怀疑拥有一个包含所有文件的包将会快得多,因为从它的外观来看,很多时间花在设置与服务器的连接上而不是在部署上本身(可能因为许多文件没有更新)
有没有办法在Visual Studio解决方案中使用MSBuild和几个脚本从多个Web项目构建单个WDP?
由于
答案 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
目标。
希望这有帮助。