我已经在 Azure 上设置了带有 TFS 的 asp.net 网站,用于使用 VS 2012 进行源代码控制。我正在尝试使用 VS 2012 新发布配置文件和 MSBuild 复制文件。阅读这篇文章Visual Studio 2012 Web Deployment Projects are Dead – Long Live Publishing Profiles,Doug 说您可以在发布配置文件中使用构建脚本。
因此,我在本地构建的 .csproj 中设置了一个测试。我只是简单地将 robots.txt 文件从根目录复制到 css 目录。这是我的测试。我在 TFS Build Process 模板中设置了我的 pubxml,在 process > 6. Publishing -- Azure Website, Web Deploy Pubish Profile 下。
<Target Name="AfterBuild">
<Copy SourceFiles="$(ProjectDir)robots.txt" DestinationFolder="$(ProjectDir)css\" />
</Target>
我将此代码放入我的 pubxml 文件中,但我什么也没得到。我究竟做错了什么?是否可以在 Azure 上构建后复制文件?
附加信息
日志文件包含这些行,所以我确定发布配置文件正在运行。
AfterBuild:
Creating directory "C:\a\src\...\css".
Copying file from "C:\a\src\...\robots.txt" to "C:\a\src\...\css\robots.txt".
以下是 Azure 的默认构建模板使用的构建步骤:
- 验证解决方案配置:
- PrepareForBuild:
- 核心编译:
- _CopyFilesMarkedCopyLocal:
- 复制文件到输出目录:
- GenerateTargetFrameworkMonikerAttribute:
- 核心编译:
- _CopyFilesMarkedCopyLocal:
- 复制文件到输出目录:
- _CopyWebApplicationLegacy:
- 验证全局包设置:
- 从IntermediateAssembly 收集文件:
- 从内容收集文件:
- CollectFilesFromIntermediateSatelliteAssembliesWithTargetPath:
- 从参考收集文件:
- CollectFilesFromAllExtraReferenceFiles:
- CollectFilesFrom_binDeployableAssemblies:
- 管道收集文件阶段:
- 排除生成调试符号:
- PreTransformWebConfig:
- TransformWebConfigCore:
- PostTransformWebConfig:
- PreProfileTransformWebConfig:
- 管道转换阶段:
- ProcessPublishDatabase设置:
- PreAutoParameterizationWebConfigConnectionStrings:
- AutoParameterizationWebConfigConnectionStringsCore:
- PostAutoParameterizationWebConfigConnectionStrings:
- PipelineMsdeploySpecificTransformPhase:
- 验证发布配置文件设置:
- CopyAllFilesToSingleFolderForMsdeploy:
- PipelineCopyAllFilesToOneFolderForMsdeploy:
- 包裹:
- 生成MsdeployManifestFiles:
- PackageUsingManifest:
- 生成示例部署脚本:
- 管道部署阶段:
- 构建后:
所以看起来 Azure 在“31. CopyAllFilesToSingleFolderForMsdeploy”步骤中打包了所有文件。在 AfterBuild 步骤中运行副本似乎为时已晚。我将 Copy 命令移至目标“BeforeBuild”,但文件仍未在 CopyAllFilesToOneFolderForMsdeploy 步骤中结束。