MSBUILD 与 VS2008 构建之间的差异

发布于 2024-11-15 07:33:20 字数 918 浏览 1 评论 0原文

我正在尝试建立一个持续集成流程,其中服务器将构建 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]

I'm trying to set up a continuous integration process, where a server will build a VS2008 .SLN file and do some other actions.

When building from Visual Studio, everything works well.
However, when building using the CI server (which uses MSBUILD), the build fails for many MSB3191 (Unable to create directory ... )

In my SLN, various projects have a non-default output path, since i am copying all their outputs into one location, which is what seems to be causing the problem.

What is the difference between MSBUILD and the build used in VS? How come one succeeds while the other fails?

Also, what is a good practice to avoid this sort of issues?

Here's the output from MSBUILD:

"D:\MasterBuild_Dev\tlv_Platform\UBUILD\RecordersAutoFwk\Main.sln" (default target) (1) ->
"D:\MasterBuild_Dev\tlv_Platform\UBUILD\Regression Automation Framework\Actions\Common\Common\EM.Licensing.csproj" (default target) (46) ->
(PrepareForBuild target) ->
C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets(790,9): error MSB3191: Unable to create directory "........\RecordersAutoFwk\Main\bin\Debug\lib\". Cannot create "D:\MasterBuild_Dev\tlv_Platform\UBUILD\RecordersAutoFwk\Main\bin\Debug\lib" because a file or directory with the same name already exists. [D:\MasterBuild_Dev\tlv_Platform\UBUILD\Regression Automation Framework\Actions\Common\Common\EM.Licensing.csproj]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤蝉 2024-11-22 07:33:20

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

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

Without more details, I'd have to say that one of your accounts has permissions issues on the server.

What acount does VS run under? What account is MSBuild running under?

夜血缘 2024-11-22 07:33:20

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

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

I sometimes get locking clashes like this when im running msbuild using multiple cores - with the /maxcpucount:n, then it seems that one of processes is locking the folder for the other and then i get something like this.
Not using the switch fixes it, doesnt happen on all sln just some.
Your not using a postbuild command to do the copying, rather than the build output path?

It would help if we knew your msbuild command?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文