我已经在 Azure 上设置了 asp.net 网站,并使用 VS 2012 使用 TFS 在线进行源代码控制。我正在尝试使用 VS 2012 新发布配置文件和 MSBuild 复制文件。阅读这篇文章Visual Studio 2012 Web Deployment Projects are Dead – Long Live Publishing Profiles ,其中 Doug 表示您可以在发布配置文件中使用构建脚本。
因此,我设置了一个可以在本地构建的 .csproj 中运行的测试。我只是简单地将 robots.txt 文件从根目录复制到 css 目录。这是我的测试。我在 TFS 构建流程模板中的 process > 6. Publishing - Azure Website、Web Deploy Pubish Profile 下设置了 pubxml。
<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 默认构建模板使用的构建步骤:
- 验证解决方案配置:
- 准备构建:
- 核心编译:
- _CopyFilesMarkedCopyLocal:
- 复制文件到输出目录:
- 生成TargetFrameworkMoniker属性:
- 核心编译:
- _CopyFilesMarkedCopyLocal:
- 复制文件到输出目录:
- _CopyWebApplicationLegacy:
- 验证全局包设置:
- 从IntermediateAssembly收集文件:
- 从内容收集文件:
- 从IntermediateSatelliteAssembliesWithTargetPath收集文件:
- 从引用收集文件:
- 从所有额外引用文件中收集文件:
- CollectFilesFrom_binDeployableAssemblies:
- 管道收集文件阶段:
- 排除生成的调试符号:
- PreTransformWebConfig:
- TransformWebConfigCore:
- PostTransformWebConfig:
- PreProfileTransformWebConfig:
- 管道转换阶段:
- 处理发布数据库设置:
- PreAutoParameterizationWebConfigConnectionStrings:
- AutoParameterizationWebConfigConnectionStringsCore:
- PostAutoParameterizationWebConfigConnectionStrings:
- PipelineMsdeploySpecificTransformPhase:
- 验证发布配置文件设置:
- CopyAllFilesToSingleFolderForMsdeploy:
- PipelineCopyAllFilesToOneFolderForMsdeploy:
- 包装:
- 生成MsdeployManifestFiles:
- PackageUsingManifest:
- 生成示例部署脚本:
- 管道部署阶段:
- 构建后:
看起来 Azure 在“31.CopyAllFilesToSingleFolderForMsdeploy”步骤中打包了所有文件。看来在 AfterBuild 步骤中运行复制已经太晚了。我将复制命令移至目标“BeforeBuild”,但文件仍未在 CopyAllFilesToOneFolderForMsdeploy 步骤中结束。
最佳答案
感谢 Sayed Ibrahim Hashimi 的文章 How to compress CSS/JavaScript before publish/package帮助我解决这个问题。
可以直接复制Package Temp Directory。我最终将此目标添加到我的发布配置文件 (pubxml) 文件中。 “CopyAllFilesTOSingleFolderForMsdeploy”步骤完成后,将运行此步骤,将文件从解决方案的一部分复制到您指定的目标文件夹中。
<Target Name="AdditionalFilesForPackage" AfterTargets="CopyAllFilesToSingleFolderForMsdeploy">
<Copy SourceFiles="$(ProjectDir)robots.txt" DestinationFolder="$(_PackageTempDir)\css\" />
</Target>
关于azure - VS 2012 使用 MSBuilld 命令发布配置文件和复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14324045/