2011-06-14 86 views
2

我想建立一个持续的集成过程,其中服务器将生成VS2008 .SLN文件并执行一些其他操作。MSBUILD VS VS2008之间的差异生成

从Visual Studio构建时,一切正常。但是,当使用CI服务器(使用MSBUILD)构建时,构建许多MSB3191失败(无法创建目录...)

在我的SLN中,各种项目都有一个非默认输出路径,因为我我正在将他们的所有输出复制到一个位置,这似乎是导致问题的原因。

MSBUILD和VS中使用的构建有什么区别?一个人如何成功而另一个人失败?

另外,避免这类问题的最佳做法是什么?

下面是从MSBUILD输出:

“d:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \ RecordersAutoFwk \ Main.sln”(缺省目标)(1) - > “d:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \回归自动化Framework \ Actions \ Common \ Common \ EM.Licensing.csproj“(默认目标)(46) - > (PrepareForBuild目标) - > C:\ Windows \ Microsoft.NET \ Framework64 \ v3.5 \ Microsoft。 Common.targets(790,9):错误MSB3191:无法创建目录“........ \ RecordersAutoFwk \ Main \ bin \ Debug \ lib \”。无法创建“D:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \ RecordersAutoFwk \ Main \ bin \ Debug \ lib”,因为已存在具有相同名称的文件或目录。 [D:\ MasterBuild_Dev \ tlv_Platform \ UBUILD \回归自动化Framework \ Actions \ Common \ Common \ EM.Licensing.csproj]

+1

您能否运行msbuild Solution.sln/verbosity:diag> log.txt并显示与错误相关的日志行? – 2011-06-14 06:15:55

+1

您是否尝试使用MSBuild在本地构建它?它是否以与构建服务器上相同的方式失败? – 2011-06-14 06:20:36

+0

尝试这两个建议。 – 2011-06-14 06:27:22

回答

0

没有更多的细节,我不得不说,你的帐户之一有权限问题服务器。

VS在什么情况下运行? MSBuild在哪个帐户下运行?

+0

它与权限无关。我已经基本上将一堆项目的输出路径设置到同一位置。每当文件夹一开始创建,就没问题。下一个想要创建该文件夹的项目因为已经创建而失败(这是我的假设,需要确认)。 – 2011-06-14 06:18:34

0

当我使用多个内核运行msbuild时,我有时会遇到像这样的锁冲突 - 使用/ maxcpucount:n,那么似乎其中一个进程正在锁定其他文件夹,然后我得到类似的东西。 没有使用开关修复它,并没有发生在所有SLN只是一些。 你没有使用postbuild命令来进行复制,而不是构建输出路径?

如果我们知道你的msbuild命令会有帮助吗?

+0

不确定,因为Teamcity是调用构建的人员。在此期间,我切换到复制作为后期制作命令,工作正常。 – 2011-06-16 00:20:24