2017-07-12 53 views
5

Şu anda geliştiriyorum F # Azure fonksiyonlarını proje ve o şekilde projemi sunduğumuz: F # iyi olanı klasörleri desteklemezHisse kodu VS Kanunu uinsg

ProjectFolder 
    -> Function1 
     -> function.json 
     -> run.fsx 
    -> Function2 
     -> function.json 
     -> run.fsx 

Verilen bu iki işlev arasındaki kodu (özellikle türleri) paylaşma yolu?

+3

Komut dosyaları yerine Azure İşlevleri için bir fsproj (önceden derlenmiş) kullanılmasını öneririm. Özellikle de fonksiyonlar arasında kod paylaşmak istiyorsanız. Ön derleme için sadece avantajlar vardır. Bir VS Azure Functions projesi kullanamazsınız, ancak buna ihtiyacınız yoktur. – TheQuickBrownFox

cevap

5

F # derleyici, klasörleri iyi destekler. Visual Studio'nun varsayılan yapılandırmada, birisinin F # projelerine klasör eklemesine izin vermemesi gerçeğine işaret ediyor olabilirsiniz - bu gerçek bir gerçektir. Ancak, bir şekilde proje dosyalarınıza klasörler eklemeyi başarırsanız (dosyayı el ile düzenleyerek veya F# Power Tools ile), F # derleyicisinde bunlarla ilgili herhangi bir sorun olmayacaktır.

Ancak, bu durum sizin durumunuzla ilgisi yoktur, çünkü komut dosyaları (fsx) derlenmiş modüller (fs) ile aynı şey değildir. Komut dosyalarının birbirine bağlanacak bir projesi yoktur ve birbirlerinin kodunu kullanmak için birbirlerinin yerine #load olmalıdır. Ve #load herhangi bir yoldan yapılabilir.

Örneğin, böyle kodunuzu hazırlamak isteyebilirsiniz: o zaman

ProjectFolder 
    -> Common 
     -> Helpers.fsx 
    -> Function1 
     -> function.json 
     -> run.fsx 
    -> Function2 
     -> function.json 
     -> run.fsx 

Ve Function1/run.fsx içinde, göreli yolu kullanarak dosyayı Helpers.fsx yük: netleştiği üzere

// Function1/run.fsx 
#load "../Common/Helpers.fsx" 

let x = Helpers.someFunction() 

Yukarıdaki örnekte, bu şekilde yüklenen bir komut dosyası, komut dosyası dosyasından adında bir modül olarak ana makine komut dosyasının içinde görünecektir.

Bu işler, ancak zamanla çok dağınık hale gelecektir. Bunun yerine ön derlenmiş kodla gitmenizi tavsiye ederim. Bu şekilde, ortak kodu paylaşılan bir kitaplığa koyabilir ve her iki işlevden de referans alabilirsiniz.

this recent video from NDC Oslo'u çok öneriyorum. Bu şeyler ve daha fazlası hakkında çok iyi konuşuyor.

+0

Kod olmayan dosyaları ad alanlarına/modüllerine vb. Dahil etmeyi bile zahmet etmem gerekir mi? – Slugart

+1

Evet, komut dosyası olmayan dosyaları da ekleyebilirsiniz. Kullanmak biraz garip olacak, ama işe yarayacaklar. Ama bunu tavsiye etmiyorum. Dediğim gibi, önceden derlemeyi tavsiye ederim. –

+0

O videoyu benim web kamerası sıramda geçirdim :) – Slugart