【问题标题】:Building .net applications with Jenkins on Ubuntu, can't load type?在 Ubuntu 上使用 Jenkins 构建 .net 应用程序,无法加载类型?
【发布时间】:2014-12-28 21:04:22
【问题描述】:

我最近制作了自己的 ubuntu/jenkins/git/sonar 构建服务器,并试图用它构建我的 .net 控制台应用程序。

它似乎构建得非常好,我使用单声道从 jenkins 运行它:

Thermostate setting through Google Calendar API
====================
ERROR: Could not load type 'Google.Apis.Auth.OAuth2.BearerToken+AuthorizationHeaderAccessMethod' from assembly 'Google.Apis.Auth, Version=1.9.0.26011, Culture=neutral, PublicKeyToken=null'.

我启用了 nuget,它告诉我

Restoring NuGet packages...

在构建期间,所以它似乎捕获了 nuget 包。

以 sudo 的形式运行所有内容,从终端得到这个:

vagrant@vagrant-ubuntu-utopic-64:/var/lib/jenkins/jobs/CalendarAPI/workspace/ConsoleApplication3$ sudo mono /var/lib/jenkins/jobs/CalendarAPI/workspace/ConsoleApplication3/bin/Debug/ConsoleApplication3.exe
Thermostate setting through Google Calendar API
====================
Could not load signature of Google.Apis.Auth.OAuth2.BearerToken+AuthorizationHeaderAccessMethod:Intercept due to: Could not load file or assembly or one of its dependencies.
Could not load signature of Google.Apis.Auth.OAuth2.IAccessMethod:Intercept due to: Could not load file or assembly or one of its dependencies.
ERROR: Could not load type 'Google.Apis.Auth.OAuth2.BearerToken+AuthorizationHeaderAccessMethod' from assembly 'Google.Apis.Auth, Version=1.9.0.26011, Culture=neutral, PublicKeyToken=null'.

我做错了什么?

【问题讨论】:

  • Google.Apis.Auth 程序集在哪里?
  • 它位于 /var/lib/jenkins/jobs/CalendarAPI/workspace/packages/Google.Apis.Auth.1.9.0/lib/net40/Google.Apis.Auth.dll

标签: git ubuntu jenkins msbuild mono


【解决方案1】:

我认为这是 Microsoft 的 .NET Framework 和 Mono 之间的区别。

Google.Apis.Auth NuGet 包依赖于 Microsoft.Net.Http NuGet 包中包含的 System.Net.Http.dll。 Google.Apis.Auth 引用了旧版本的 System.Net.Http 1.5.0.0,它在 Windows 上被重定向到 System.Net.Http 4.0.0.0,但在 Mono 上这种重定向不会发生。同样对于 .NET 4.5 项目,添加 Microsoft.Net.Http NuGet 包时不会直接引用 System.Net.Http.dll,但会在 .NET 4.0 项目中引用它。

解决此问题的可能方法是:

  1. 将您的项目更改为 .NET 4.0 而不是 .NET 4.5,然后重新安装 NuGet 包。
  2. 确保 System.Net.Http.dll 始终在本地复制到应用程序的输出目录。
  3. 为 System.Net.Http 添加绑定重定向,以便将 1.5.0.0 映射到 4.0.0.0

绑定重定向可能是最简单的解决方案。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 2012-04-30
    • 2018-03-11
    • 2019-04-29
    • 2018-06-06
    • 1970-01-01
    • 2014-04-16
    • 2016-11-07
    • 2018-10-22
    相关资源
    最近更新 更多