【问题标题】:Building .NET Standard Library from Jenkins using MSBuild使用 MSBuild 从 Jenkins 构建 .NET 标准库
【发布时间】:2017-10-09 16:49:39
【问题描述】:

使用一些 .NETStandand 库构建 MazeCreator 解决方案会在从 jenkins 构建时引发 thousands 错误,并抱怨 BCL 类型:

error CS0518: Predefined type 'System.Enum' is not defined or imported
error CS0518: Predefined type 'System.Int32' is not defined or imported
error CS0518: Predefined type 'System.Object' is not defined or imported 

VsDevCmd.bat 设置的所有环境变量都在 Jenkins 上正确设置。

构建正在调用:

nuget restore
msbuild MazeCreator.sln /p:Configuration=Release

Developer Command Prompt for VS 工作正常

从命令行构建工作正常,在AppVeyorLinux 和 Mac 上构建也是绿色的。

【问题讨论】:

  • 可能是错误版本的 msbuild。这对詹金斯来说似乎从来都不是问题。使用完整路径名。
  • 不高兴。即使使用 nuget.exe 和 MSBuild.exe 的完整路径 :(
  • 这是 [jenkins] 问题的另一个奇怪之处,他们从不告诉他们使用的确切路径。

标签: .net jenkins msbuild .net-standard


【解决方案1】:

问题似乎与 Jekins 服务权限有关。

更改Jenkin Service登录方式后(MSBuild - Jenkins - Nuget integration)

nuget 可以正确恢复 .NETStandard 依赖,现在构建是绿色的。

【讨论】:

  • 您是如何更改Jenkin Service 权限的?我在这里遇到了同样的问题。
  • 您的服务属性上有一个Log On 标签,您还需要调用C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat 来正确设置VS 环境变量。
【解决方案2】:

我们已将 NuGet.exe 签入到版本 3.4.4-rtm-1321 的 SVN 源代码树中。

然后我们使用此命令将其更新为 NuGet.exe 4.7.1,然后我们的构建再次开始在 Jenkins 上运行:

NuGet.exe update -self

顺便说一句,我们不会将 Jenkins 作为服务运行,而是将其作为用户进程运行,因此我们可以进行一些无法进行的 DirectX 单元测试在 Session 0 中完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2016-11-08
    • 2017-08-13
    相关资源
    最近更新 更多