我有一个构建定义,其中包含以下构建步骤:
在第3步中,Gulp在我的应用程序根目录中生成dist
文件夹。 dist
文件夹包含一些子文件夹和文件。子文件夹本身可以包含其他子文件夹和文件。
在步骤4中, Visual Studio Build 步骤在完成时创建<ProjectName>.zip
zip文件。
如何在dist
中添加<ProjectName>.zip
文件夹?
我尝试在同一构建定义中一次部署一个 Azure Web App Deployments 一个zip文件,但第二个 Azure Web App部署构建步骤擦除了部署的任何内容由第一个。有没有办法告诉第二个 Azure Web App部署步骤“追加”到第一个 Azure Web App部署步骤部署的内容?
答案 0 :(得分:5)
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
...
...
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
...
...
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target> -->
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="dist\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>dist\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>
CopyAllFilesToSingleFolderForPackageDependsOn
必须在导入<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
dist\**\*
表示取直接位于Web应用程序根目录dist
文件夹
dist\%(RecursiveDir)%(Filename)%(Extension)
表示将dist
文件夹直接放在包中的Web应用程序根目录下示例包路径:
C:\_publish\BuildAgentDemo.zip\Content\C_C\Repos\BuildAgentDemoTest1\BuildAgentDemo\obj\Release\Package\PackageTmp\dist
BuildAgentDemo.zip
是Web部署包发布配置文件PackageTmp
是您的网络应用程序根目录dist
是自定义文件夹和文件的最终位置答案 1 :(得分:1)
您可以在项目文件中添加自定义目标,以包含Gulp生成的文件。有关详细信息,请参阅此问题:How do you include additional files using VS2010 web deployment packages?
另一种发布Gulp文件夹的方法是启用Azure Web App的FTP部署。然后,您可以在“Azure Web App部署”任务之后添加FTP Uploader任务。使用“Azure Web App部署”任务部署由VS Build生成的程序包,并使用“FTP Uploader”任务将“dist”文件夹上载到Azure Web App。注意:确保取消选中FTP上传器任务的“删除旧文件”选项。