2017-03-27 43 views
5

.fsx paylaşılan yüklenmemesi?#load Neden eser aynı klasörde denedim</p> <p>#load ve ben eksik</p> <p>aşağıdaki gibi göreli bir klasörde değil

run.fsx

#load "../shared/shared.fsx" 
let key = "MyKey" 

let Run(message: string, log: TraceWriter, result: byref<string>) = 
    result <- doItAll message key 

    log.Info(sprintf "F# results: %s" result) 

olan shared.fsx hatası

let doItAll message key = key + " has handled " + message 

mesafesindedir

run.fsx(x,y): error FS39: The value or constructor 'doItAll' is not defined 
+0

Not - emin olun size ayarlamak için host.json düzenledikten { \t "watchDirectories": [ "paylaşılan", "paylaşılan-fs"] } –

cevap

6

Eğer shared.fsx açıkça bir ad veya modül adı belirtmezseniz, daha sonra F # derleyici kodu dosyaya örtülü olarak adlandırılmış bir modülde Shared. Sen open Shared ekleyerek hatayı düzeltmek gerekir:

#load "../shared/shared.fsx" 
open Shared 

let key = "MyKey" 

let Run(message: string, log: TraceWriter, result: byref<string>) = 
    result <- doItAll message key  
    log.Info(sprintf "F# results: %s" result) 

kendini adlandırma, ayrıca shared.fsx yılında module beyanı ekleyebilir ve açık bir Adını kendini vermek kontrol etmek istiyorsanız:

module SharedStuff 

let doItAll message key = key + " has handled " + message 
+0

Teşekkür Tomas - işte belli değil biraz Ayrıca açıklama için dosya isminden bağımsız olarak dosya adının önünde büyük bir S var. –

+0

@ DavidLapeš Evet, F # ilk harfi büyük harfe dönüştürür - Kuralların ne olduğundan emin değilim, bu yüzden açık bir modül adı kullanmak her zaman daha güvenli bir seçenek :) –