【问题标题】:Differences between MSBUILD vs VS2008 buildMSBUILD 与 VS2008 构建之间的差异
【发布时间】:2011-06-14 05:55:50
【问题描述】:

我正在尝试建立一个持续集成过程,其中服务器将构建一个 VS2008 .SLN 文件并执行一些其他操作。

从 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\Regression Automation 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\Regression Automation Framework\Actions\Common\Common\EM.Licensing.csproj]

【问题讨论】:

  • 能否请您运行 msbuild Solution.sln /verbosity:diag > log.txt 并显示与错误相关的日志行?
  • 您是否尝试使用 MSBuild 在本地构建它?它是否以与构建服务器相同的方式失败?
  • 尝试这两个建议。
  • 添加了构建机器的 MSBUILD 输出

标签: c# visual-studio-2008 msbuild continuous-integration


【解决方案1】:

如果没有更多详细信息,我不得不说您的其中一个帐户在服务器上存在权限问题。

VS 在什么帐户下运行? MSBuild 在什么帐户下运行?

【讨论】:

  • 与权限无关。我基本上已经将一堆项目的输出路径设置到同一个位置。每当首先创建文件夹时,都可以。想要创建此文件夹的下一个项目失败,因为它已经创建(这是我的假设,需要确认)。
【解决方案2】:

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

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

【讨论】:

  • 不确定,因为 Teamcity 是调用构建的那个。同时我切换到复制作为后期构建命令,工作正常。
猜你喜欢
  • 2017-02-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
相关资源
最近更新 更多