gpt4 book ai didi

windows - Msbuild 通过 VS 和命令行工作,但通过 Jenkins 失败

转载 作者:可可西里 更新时间:2023-11-01 13:32:28 28 4
gpt4 key购买 nike

我正在尝试构建一个包含多个 C++ .vcproj 的 VS .sln。解决方案文件是使用 CMake 生成的,我已经在 J​​enkins 中使用了这部分(使用 CMake 构建器插件)。要构建解决方案文件,我使用的是 msbuild。我能够使用 Visual Studio 和命令行中的以下命令构建解决方案:

C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" /t:Rebuild bin/SonIO.sln

此构建成功(在 Jenkins 所在的同一台机器上)。

但是,我正尝试在 Jenkins 中自动执行这部分构建,构建最终失败并出现几个 C1083 错误(“无法打开源文件:'..\path\to\file.ext': No such file or directory). 我试过使用 Jenkins msbuild 插件并使用在终端中工作的完全相同的命令作为“执行 Windows 批处理命令”构建步骤, 结果相同。

当使用 Windows 批处理命令构建步骤时,我可以在日志中看到正在执行的命令:

C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319 msbuild.exe" /t:Rebuild bin/SonIO.sln

...与从命令行运行的完全相同,包括工作目录。

我将 Jenkins 作为一项服务运行,并且我将服务登录为我的帐户(具有管理员权限)。有人知道 Jenkins 将从哪个目录执行批处理命令吗?

为什么我会看到 Jenkins 和命令行之间的这种行为差异?

最佳答案

这既是一种变通方法也是一种解决方案,但我最终使用了 devenv 而不是 msbuild 并且它工作正常。

我知道这强烈暗示这是一个环境问题,但由于在构建服务器上安装 VS 不是问题,我决定节省在 msbuild 兔子洞中花费的时间。

关于windows - Msbuild 通过 VS 和命令行工作,但通过 Jenkins 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814294/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com