F# 在 .fs VS .fsx 文件中编译 VS Intellisense
F# Compiling VS Intellisense in .fs VS .fsx files
Visual Studio 2015 年,相同的 F# 4.0 控制台应用程序。
两个文件,一个Program.fs
文件和一个Script.fsx
脚本文件,代码相同:
open FSharp.Core
open Microsoft.FSharp.Collections
let seq = seq { 1 .. 3 }
let seqItem1 = Seq.nth(0) seq
let seqItem2 = Seq.item(0) seq
Program.fs
不会编译:“.item”构造方法未定义。没有来自智能感知的进一步消息。
Script.fsx
工作正常,但 Intellisense 提示 Seq.nth
已弃用,请改用 Seq.item
。
就我而言,这是因为我最初是在 VS 2015 上创建项目的,但有一段时间我不得不在 VS2017 上工作。切换到 2017 时,由于某种原因无法在项目引用之间找到 FSharp.Core
——然后我添加了另一个对它的引用,但是我(错误地)保留了对 dll 的旧引用。
切换回 VS2015 带回了旧的 FSharp.Core
参考以及 VS2107 中添加的另一个参考。这导致了问题中所述的行为。
我还要测试将项目带回 VS2017 是否会导致再次找不到 FSharp.Core
引用及其背后的原因。
Visual Studio 2015 年,相同的 F# 4.0 控制台应用程序。
两个文件,一个Program.fs
文件和一个Script.fsx
脚本文件,代码相同:
open FSharp.Core
open Microsoft.FSharp.Collections
let seq = seq { 1 .. 3 }
let seqItem1 = Seq.nth(0) seq
let seqItem2 = Seq.item(0) seq
Program.fs
不会编译:“.item”构造方法未定义。没有来自智能感知的进一步消息。Script.fsx
工作正常,但 Intellisense 提示Seq.nth
已弃用,请改用Seq.item
。
就我而言,这是因为我最初是在 VS 2015 上创建项目的,但有一段时间我不得不在 VS2017 上工作。切换到 2017 时,由于某种原因无法在项目引用之间找到 FSharp.Core
——然后我添加了另一个对它的引用,但是我(错误地)保留了对 dll 的旧引用。
切换回 VS2015 带回了旧的 FSharp.Core
参考以及 VS2107 中添加的另一个参考。这导致了问题中所述的行为。
我还要测试将项目带回 VS2017 是否会导致再次找不到 FSharp.Core
引用及其背后的原因。