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

时间:2013-01-14 18:05:27

标签: azure msbuild visual-studio-2012

我在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。 6.发布 - Azure网站,Web部署发布配置文件。

<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. ValidateSolutionConfiguration:
  2. PrepareForBuild:
  3. CoreCompile:
  4. _CopyFilesMarkedCopyLocal:
  5. CopyFilesToOutputDirectory:
  6. GenerateTargetFrameworkMonikerAttribute:
  7. CoreCompile:
  8. _CopyFilesMarkedCopyLocal:
  9. CopyFilesToOutputDirectory:
  10. _CopyWebApplicationLegacy:
  11. ValidateGlobalPackageSetting:
  12. CollectFilesFromIntermediateAssembly:
  13. CollectFilesFromContent:
  14. CollectFilesFromIntermediateSatelliteAssembliesWithTargetPath:
  15. CollectFilesFromReference:
  16. CollectFilesFromAllExtraReferenceFiles:
  17. CollectFilesFrom_binDeployableAssemblies:
  18. PipelineCollectFilesPhase:
  19. ExcludeGeneratedDebugSymbol:
  20. PreTransformWebConfig:
  21. TransformWebConfigCore:
  22. PostTransformWebConfig:
  23. PreProfileTransformWebConfig:
  24. PipelineTransformPhase:
  25. ProcessPublishDatabaseSettings:
  26. PreAutoParameterizationWebConfigConnectionStrings:
  27. AutoParameterizationWebConfigConnectionStringsCore:
  28. PostAutoParameterizationWebConfigConnectionStrings:
  29. PipelineMsdeploySpecificTransformPhase:
  30. ValidatePublishProfileSettings:
  31. CopyAllFilesToSingleFolderForMsdeploy:
  32. PipelineCopyAllFilesToOneFolderForMsdeploy:
  33. 包装:
  34. GenerateMsdeployManifestFiles:
  35. PackageUsingManifest:
  36. GenerateSampleDeployScript:
  37. PipelineDeployPhase:
  38. AfterBuild:
  39. 所以看起来Azure在“31. CopyAllFilesToSingleFolderForMsdeploy”步骤中打包了所有文件。看起来在AfterBuild步骤中运行副本是迟到的。我将Copy命令移动到目标“BeforeBuild”,但文件仍未在CopyAllFilesToOneFolderForMsdeploy步骤中结束。

1 个答案:

答案 0 :(得分:6)

感谢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>