2013-05-02 21 views
10

Birazdan bir F # başlatıcısı. Ben etkileşimli pencerede bir XmlTypeProvider kodunun bazılarını ilk olarak bir komut dosyası (fsx) dosyasına girerek test etmeye çalışıyorum. komut dosyası aşağıdakikomut dosyaları, FSharp.Data'yı tanımaz.

open FSharp.Data // gives "The namespace or module 'FSharp' is not defined" 

Her şey başvurmak için eklenmiştir tanımak ve dosyalar XmlTypeProvider referansı bulmakta herhangi bir sorun yok gibi görünüyor ama nedense aynı projede bir komut dosyası yok .FS olmaz . Hatta bir .fs dosyasında çalışmak için kod var.

FSharp.Data'yı nuget ile ekledim ve her şey doğru şekilde eklenmiş gibi görünüyor. Burada neyi özlüyorum?

+1

http://stackoverflow.com/questions/3102472/fc-fsx-script-files-and-project-references içeriyor proje referanslarını kullanmaz (ne fsi yapar). Dosyaları el ile göndermeniz gerekir. Yardım için bu gönderiye bakın. – mydogisbox

+1

Burada daha ayrıntılı bir kayıt var: http://blogs.msdn.com/b/chrsmith/archive/2008/09/12/scripting-in-f.aspx – mydogisbox

+0

Teşekkürler Chris. Birkaç kitabını okudum ama o değil! – user2344035

cevap

5

Bu arada, geçen hafta bu hatanın hatalarını ayıklıyordum. Dosya bulunamadı

  • : Üç olası nedenleri temelde vardır. En belirgin olanı, F # aslında dll dosyasını bulamıyor. (F # komut dosyası kullanırken)

  • Tipi sağlayıcı güvenilmiyor (proje özelliklerinde Referansları kontrol edin) referans doğru olduğundan emin olun veya sağ dosyaya #r puan emin olun. Tür sağlayıcı, Visual Studio tarafından engelleniyor. Sağlayıcıyı ilk kez yüklediğinizde "Devre Dışı Bırak" ı tıklarsanız bu durum gerçekleşebilir. Bunu düzeltmek için, "Araçlar" - "Seçenekler" - "F # Araçları" - "Tür Sağlayıcıları" na gidin ve tür sağlayıcısını etkinleştirin ("Güvenilir" seçeneğini işaretleyin).

  • DLL, OS tarafından engellendi. Son olarak, dll güvenilmeyen bir kaynaktan geliyorsa, Windows bunu engelleyebilir (özellikle bir zip dosyasını karşıdan yükleyip dosyayı Windows kullanarak ayıkladığınızda gerçekleşir). Dosyanın engellemesini kaldırmak için dosya özelliklerine gidin ve "Engellemeyi kaldır" ı tıklayın. good description here. var.

9

Komut dosyasında, FSharp.Data.dll dosyasını içeren nuget paketleri klasörüne başvuru ekleyin. Bu klasör ayrıca bir FSX dosya tasarımcı dll (FSharp.Data.DesignTime.dll)

#r @"<your nuget packages folder>\FSharp.Data.2.1.0\lib\net40\FSharp.Data.dll" 
+0

Beni kandıran şey, VS yazarak yazmaya başladığımda (yani, "#r" ") bana squiggly çizgiler veriyor olmasıdır. Aslında dizeyi tasarım zamanında ayrıştırıyor. Sonunda dll'yi bulduğumda, dalgalı çizgi gitti. – mac10688

İlgili konular