4

F#を使った私の最初のプログラム。

私はそのような1つのファイルを持っています:

namespace LanguageMapper.Data


#if INTERACTIVE
#r "System.Data"
#r "System.Data.Linq"
#r "FSharp.Data.TypeProviders"
#endif

open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders

module Data = 

    // You can use Server Explorer to build your ConnectionString. 
    type SqlConnection = Microsoft.FSharp.Data.TypeProviders.SqlDataConnection<ConnectionString = @"connstring">
    let db = SqlConnection.GetDataContext()

それから私はそのような別のファイルを持っています

namespace LanguageMapper.Program

open Data

module Program = 

[<EntryPoint>]
let main argv = 


    let getLocale x = 
        match x with
        | [|"live"|] -> "live"
        | [|"dev"|] -> "dev"
        | _ -> "local"

それに加えてopen Data、VSで赤い波線が出て私に言っています:

「エラー1この宣言は、部分的に修飾されたパスを介して名前空間またはモジュール'Microsoft.FSharp.Data'を開きます。名前空間のフルパスを使用するようにこのコードを調整します。この変更により、新しい構造が追加されるため、コードがより堅牢になります。 F#およびCLIライブラリ。」

私は何が間違っているのですか?あるファイルを別のファイルから参照したいだけです。

4

1 に答える 1

5

名前空間を含む完全修飾名を使用してモジュールを開く必要があります。したがって、LanguageMapper.Program必要がありますopen LanguageMapper.Data.Data(最後のビットのみがモジュール名です)。

コンパイラは、openDataという名前の名前空間またはモジュールを開くことのみを指定しているため、定義に不満を持っています。おそらく、Microsoft.FSharp名前空間に対していくつかの「自動」オープンがあるため、Microsoft.FSharp.Dataで1つ見つかります。

于 2012-11-11T17:32:12.490 に答える