VS 2012发布配置文件和使用MSBuild命令复制文件

5
我已经在Azure上使用TFS在线进行源代码控制,使用VS 2012设置了asp.net网站。我正在尝试使用VS 2012的新发布配置文件和MSBuild来复制文件。阅读此文章Visual Studio 2012 Web Deployment Projects are Dead – Long Live Publishing Profiles,其中Doug说您可以在发布配置文件中使用构建脚本。
因此,我设置了一个测试,在我的.csproj中进行本地构建。我只是简单地将robots.txt文件从根目录复制到css目录。这是我的测试。我在TFS Build Process模板下的process > 6. Publishing -- Azure Website, Web Deploy Publish 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. 生成目标框架Moniker属性:
  7. 核心编译:
  8. _CopyFilesMarkedCopyLocal:
  9. 复制文件到输出目录:
  10. _CopyWebApplicationLegacy:
  11. 验证全局包设置:
  12. 从中间程序集收集文件:
  13. 从内容收集文件:
  14. 从带有目标路径的中间卫星程序集收集文件:
  15. 从引用中收集文件:
  16. 从所有额外引用文件中收集文件:
  17. 从_binDeployableAssemblies收集文件:
  18. 管道收集文件阶段:
  19. 排除生成的调试符号:
  20. 预转换WebConfig:
  21. TransformWebConfigCore:
  22. 后转换WebConfig:
  23. 预配置文件转换WebConfig:
  24. 管道转换阶段:
  25. 处理发布数据库设置:
  26. 预自动参数化WebConfig连接字符串:
  27. AutoParameterizationWebConfigConnectionStringsCore:
  28. 后自动参数化WebConfig连接字符串:
  29. 管道Msdeploy特定转换阶段:
  30. 验证发布配置文件设置:
  31. 将所有文件复制到单个文件夹进行Msdeploy:
  32. 将所有文件复制到一个文件夹进行Msdeploy:
  33. 打包:
  34. 生成Msdeploy清单文件:
  35. 使用清单文件打包:
  36. 生成示例部署脚本:
  37. 管道部署阶段:
  38. 构建之后:

看起来Azure在“31.将所有文件复制到单个文件夹以进行Msdeploy”步骤期间打包了所有文件。运行复制命令似乎在AfterBuild步骤中太晚了。我将复制命令移动到目标“BeforeBuild”,但文件仍未出现在CopyAllFilesToOneFolderForMsdeploy步骤中。


我已经编辑了你的标题。请参考“问题的标题应该包含“标签”吗?”,在那里达成共识是“不应该”。 - John Saunders
@JohnSaunders 谢谢您修复我的标题。 - user1152113
1个回答

7
感谢Sayed Ibrahim Hashimi的文章如何在发布/打包之前压缩CSS/JavaScript,帮我解决了这个问题。
可以直接复制Package Temp Directory。我最终将此目标添加到我的发布配置文件(pubxml)中。在“CopyAllFilesTOSingleFolderForMsdeploy”步骤完成后,此步骤将运行,它将从解决方案的某个部分复制一个文件到您指定的目标文件夹中。
<Target Name="AdditionalFilesForPackage" AfterTargets="CopyAllFilesToSingleFolderForMsdeploy">
    <Copy SourceFiles="$(ProjectDir)robots.txt" DestinationFolder="$(_PackageTempDir)\css\" />  
</Target>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接