为什么我的F#项目在本地构建但在Travis上失败?

时间:2015-08-06 21:22:01

标签: .net f# travis-ci

我的项目的构建版本为failing on Travis,并出现以下错误:

  

FSC:错误FS0193:来自编译单元'System'的模块/名称空间'System.Net'不包含名称空间,模块或类型'WebClient'

主项目没有任何依赖关系,测试项目不依赖于System.NetWebClient,所以我不确定这在哪里适用。

一切都在本地工作正常,所以我假设版本不匹配,但无法确定是什么。

我的本​​地版本的输出可以在this text file中找到。

更新

根据GitHub issue创建的@7sharp9,我们发现这是Mono packaging bug

建议的workaround是引用NuGet包中的FSharp.Core,这对我有用。

您可能希望only use the NuGet package when the canonical path is unavailable,就像我一样。

1 个答案:

答案 0 :(得分:11)

travis版本使用 GAC 中的FSharp.Core进行构建:

  

-r:/usr/lib/mono/gac/FSharp.Core/4.3.1.0__b03f5f7f11d50a3a/FSharp.Core.dll

而您的本地版本使用的是FSharp.Core

  

-r:“/ Library / Frameworks / Mono.framework / Versions / 4.0.2 / lib / mono / xbuild /../参考装配/ Microsoft / FSharp / .NETCore / 3.259.3.1 / FSharp.Core.dll “

您收到的错误:

  

FSC:错误FS0193:来自编译单元'System'的模块/名称空间'System.Net'不包含名称空间,模块或类型'WebClient'

指示其尝试从位于GAC中的Fsharp.Core解析System.Net引用的FSharp.Core不匹配,项目中的其他引用都是PCL 259,不能满足此引用。

至于为什么,你能否使用诊断开关来建立travis?

好的,接下来,现在已经链接了诊断构建,问题在于:

  

HintPath /usr/lib/mono/xbuild/../参考程序集/ Microsoft / FSharp / .NETCore / 3.259.3.1 / FSharp.Core.dll不存在。               参考FSharp.Core解析为/usr/lib/mono/gac/FSharp.Core/4.4.0.0__b03f5f7f11d50a3a/FSharp.Core.dll。 CopyLocal = False               在搜索路径{GAC}

中找到参考

travis实例没有:

  

/ usr / lib / mono / xbuild /../参考装配/ Microsoft / FSharp / .NETCore / 3.259.3.1 / FSharp.Core.dll

所以它回归到gac。

最近有一个问题,FSharp.Core没有安装到正确的位置,也许这​​就是它的表现。

我要做的是尝试不同版本的单声道,如下所述:http://docs.travis-ci.com/user/languages/csharp/也许尝试使用3.12或alpha或beta之类的老版本来尝试确认这确实是问题。