我有一些使用本地服务器在VSO上运行的持续集成的构建定义。问题是,有时它们会失败,因为Microsoft.WindowsAzure.targets在构建Azure项目时无法复制某些文件(在本地构建时,使用VS或MSBuild,始终有效)。 我的解决方案的基本结构如下:
Solution
|_Azure.Web.App
| |_Roles
| |_Web.App
|_Web.App
|_Controllers
|_Models
|_Resources
| |_File1.csv
| |_File2.csv
|_Startup
| |_File3.cmd
| |_File4.xml
| |_File5.msi
|_Views
问题是在构建Azure.Web.App时,Resources和Startup文件夹中的文件未复制到输出目录,显示此错误:
[错误] C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Windows Azure Tools \ 2.7 \ Microsoft.WindowsAzure.targets(2787,5):错误MSB3030:无法复制文件“Resources \ File1.csv”,因为找不到它。
所有文件都设置为始终复制到输出目录,构建操作如下:
当发生这种情况时,我无法确定情况,而且对我来说它们似乎很随机。通常在再次构建之前手动再次触发构建和/或删除代理目录中的源文件来解决问题,这是不理想的,因为此时持续集成是不可靠的。 已经很好地了解了所有现有主题,但没有找到适合我情况的主题。对不起,如果问题已经提出,请提前致谢。
编辑:忘记提及我正在谈论基于vNext的新构建定义(不是基于XML的构建)。
答案 0 :(得分:0)
我发现在某些发生此特定错误的情况下,您可以通过在MSBuild步骤的“MSBuild arguments”设置中传递/m:1
选项来阻止它发生。
这可以防止并发构建,强制MSBuild一次处理一个项目。遗憾的是,这似乎是解决了很多构建问题的方法。