我在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默认构建模板使用的构建步骤:
所以看起来Azure在“31. CopyAllFilesToSingleFolderForMsdeploy”步骤中打包了所有文件。看起来在AfterBuild步骤中运行副本是迟到的。我将Copy命令移动到目标“BeforeBuild”,但文件仍未在CopyAllFilesToOneFolderForMsdeploy步骤中结束。
答案 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>