azure - VS 2012 使用 MSBuilld 命令发布配置文件和复制文件

标签 azure msbuild visual-studio-2012

我已经在 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 默认构建模板使用的构建步骤:

  1. 验证解决方案配置:
  2. 准备构建:
  3. 核心编译:
  4. _CopyFilesMarkedCopyLocal:
  5. 复制文件到输出目录:
  6. 生成TargetFrameworkMoniker属性:
  7. 核心编译:
  8. _CopyFilesMarkedCopyLocal:
  9. 复制文件到输出目录:
  10. _CopyWebApplicationLegacy:
  11. 验证全局包设置:
  12. 从IntermediateAssembly收集文件:
  13. 从内容收集文件:
  14. 从IntermediateSatelliteAssembliesWithTargetPath收集文件:
  15. 从引用收集文件:
  16. 从所有额外引用文件中收集文件:
  17. CollectFilesFrom_binDeployableAssemblies:
  18. 管道收集文件阶段:
  19. 排除生成的调试符号:
  20. PreTransformWebConfig:
  21. TransformWebConfigCore:
  22. PostTransformWebConfig:
  23. PreProfileTransformWebConfig:
  24. 管道转换阶段:
  25. 处理发布数据库设置:
  26. PreAutoParameterizationWebConfigConnectionStrings:
  27. AutoParameterizationWebConfigConnectionStringsCore:
  28. PostAutoParameterizationWebConfigConnectionStrings:
  29. PipelineMsdeploySpecificTransformPhase:
  30. 验证发布配置文件设置:
  31. CopyAllFilesToSingleFolderForMsdeploy:
  32. PipelineCopyAllFilesToOneFolderForMsdeploy:
  33. 包装:
  34. 生成MsdeployManifestFiles:
  35. PackageUsingManifest:
  36. 生成示例部署脚本:
  37. 管道部署阶段:
  38. 构建后:

看起来 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/

相关文章:

c++ - 有没有办法在 Visual Studio 中列出库依赖项?

c# - ssl 证书代码异常

c# - 为什么这段代码不能在 .NET 4.0 的 VS2010 中编译?

django - Azure 部署未在 repo 中获取 SSL 证书

msbuild - SpecsFor.Mvc 构建失败

azure - 获取 unix 时间戳 Azure App Insights

c# - 避免 CopyFilesToOutputDirectory 构建步骤

c++ - g++ 和 VS2012 中的正则表达式

azure - 有没有办法禁用和重新启用数据库 Azure SQL 的外键约束

vs2015连接字符串的azure函数工具