.net 为什么我的F#项目在本地构建,但在Travis上失败了?
我的项目的生成包含以下错误: FSC:错误FS0193:编译单元“System”中的模块/命名空间“System.Net”不包含命名空间、模块或类型“WebClient” 主项目没有任何依赖项,测试项目也不依赖于.net 为什么我的F#项目在本地构建,但在Travis上失败了?,.net,f#,travis-ci,.net,F#,Travis Ci,我的项目的生成包含以下错误: FSC:错误FS0193:编译单元“System”中的模块/命名空间“System.Net”不包含命名空间、模块或类型“WebClient” 主项目没有任何依赖项,测试项目也不依赖于System.Net或WebClient,因此我不确定这在这里是如何应用的 在本地一切正常,所以我假设某个地方的版本不匹配,但无法确定是什么 我的本地构建的输出可以在中找到 更新 根据它所创建的,发现这是一个单声道 建议的方法是从NuGet包中引用FSharp.Core,这对我很有用
System.Net
或WebClient
,因此我不确定这在这里是如何应用的
在本地一切正常,所以我假设某个地方的版本不匹配,但无法确定是什么
我的本地构建的输出可以在中找到
更新 根据它所创建的,发现这是一个单声道 建议的方法是从NuGet包中引用
FSharp.Core
,这对我很有用
您可能希望,正如我所做的那样。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/。/Reference Assemblies/Microsoft/FSharp/.NETCore/3.259.3.1/FSharp.Core.dll”
您得到的错误是:
FSC:错误FS0193:编译单元“System”中的模块/命名空间“System.Net”不包含命名空间、模块或类型“WebClient”
表示一个不匹配的FSharp.Core
,它试图从位于GAC中的FSharp.Core解析System.Net引用,项目中的其他引用都是PCL 259,它们将不满足此引用
至于为什么,你能让特拉维斯用诊断开关来建造吗
好的,接下来,现在有一个诊断构建链接,问题在这里:
HintPath/usr/lib/mono/xbuild/。/Reference Assemblies/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/。/Reference Assemblies/Microsoft/FSharp/.NETCore/3.259.3.1/FSharp.Core.dll
所以它又回到了gac
最近出现了一个问题,FSharp.Core没有安装到正确的位置,可能这就是问题的表现
我要做的是尝试这里描述的不同版本的mono:可能尝试一个旧版本,如3.12或alpha或beta,以尝试确认这确实是问题所在。全盲拍摄,但似乎您正在使用FSharp.Core 4.3.1.0组件进行本地构建,而TravisCI使用3.x。它们可能具有不同的传递依赖项。我在谷歌上搜索了一下,似乎你已经遇到了一些PCL的F#问题——这可能是另一个问题;在4.x中固定,在3.x中出现。你能试着在3.x上的某个地方构建它吗?我试着找出它,但是到处都有4.x。谢谢你的关注。我更新了问题链接到Travis构建,其中/verbosity:diagnostic添加了一个构建矩阵。有些版本有不同的消息,但看起来本质上是相同的问题:这可能是Travis上的软件包安装问题,我为您记录了一个问题: