2012-11-11 5 views
2

F #을 사용하는 첫 프로그램입니다.F # 모듈/네임 스페이스 오류

나는 하나 개의 파일과 같이 있습니다

: 다음

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() 

내가 VS에서 구불 구불 한 빨간를 얻을 open Data의 맨 위에 그래서

namespace LanguageMapper.Program 

open Data 

module Program = 

[<EntryPoint>] 
let main argv = 


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

같은 다른 파일 말해이

"오류 1이 선언은 네임 스페이스 또는 모듈을 엽니 다. 'Microsoft.FSharp.Data'는 부분적으로 규정 된 경로. 이 코드를 조정하여 네임 스페이스의 전체 경로를 사용하십시오. 새로운 구조가 도서관은 F #과 CLI 추가 될 때이 변경 코드보다 강력한 만들 것입니다. "

내가 뭘 잘못

? 난 그냥 다른에서 하나 개의 파일을 참조 할.

답변

5

당신은 그 네임 스페이스를 포함한다 정규화 된 이름을 사용하여 모듈을 열어야합니다. 당신이 open LanguageMapper.Data.Data 필요 LanguageMapper.Program에 그래서 (마지막 비트 모듈 이름입니다).

을 컴파일러가 open 정의에 불평 그것 때문에 네임 스페이스 또는 이름이 지정된 모듈 만 열도록 지정합니다. 데이터 - Microsoft.FSharp 네임 스페이스에 대한 '자동'열리기가있을 수 있으므로 Microsoft.FSharp.Data에서이 데이터를 찾습니다.

+1

사실 이것은 프로젝트 파일에서 수동으로 파일 순서를 다시 정렬해야한다는 사실을 더한 것입니다. http://stackoverflow.com/questions/1608240/how-do-i-reference-types-in -different-f-files. 고맙습니다! – Micah

관련 문제