我最近制作了自己的 ubuntu/jenkins/git/sonar buildserver,并尝试用它构建我的 .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'.
我究竟做错了什么?
最佳答案
我相信这是 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 项目引用它。
解决此问题的可能方法是:
绑定(bind)重定向可能是最简单的解决方案。
关于git - 在 Ubuntu 上使用 Jenkins 构建 .net 应用程序,无法加载类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680562/