2013-05-02 10 views
10

Un po 'di un principiante F #. Sto provando a testare alcuni dei miei codici XmlTypeProvider nella finestra interattiva inserendoli per la prima volta in un file di script (fsx). Il file di script non riconosce la seguentenon riconoscono FSharp.Data

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

Tutto è stato aggiunto per fare riferimento, e .fs file sembrano non avere alcun problema a trovare il riferimento XmlTypeProvider ma per qualche ragione, uno script nello stesso progetto non lo fa . Ho persino ottenuto il codice per funzionare in un file .fs.

Ho aggiunto FSharp.Data con nuget e tutto sembra aggiungere correttamente. Cosa mi manca qui?

+1

http://stackoverflow.com/questions/3102472/fc-fsx-script-files-and-project-references Un file fsx non usa riferimenti a progetti (nemmeno FSI). È necessario fare riferimento manualmente ai file. Vedi quel post per assistenza. – mydogisbox

+1

C'è una scrittura più approfondita qui: http://blogs.msdn.com/b/chrsmith/archive/2008/09/12/scripting-in-f.aspx – mydogisbox

+0

Grazie Chris. Ho letto molti dei tuoi articoli, ma non quello! – user2344035

risposta

5

Per inciso, stavo solo mettendo a punto questo errore la scorsa settimana. Ci sono essenzialmente tre possibili ragioni:

  • Impossibile trovare il file. Il più ovvio è che F # non riesce a trovare il file dll. Assicurarsi che il riferimento è corretta (controllare i riferimenti nelle proprietà del progetto) o assicurarsi che il proprio #r punti per il file giusto (quando si utilizza un file di script # F)

  • tipologia non è attendibile. Il provider del tipo è bloccato da Visual Studio. Questo può accadere se si fa clic su "Disabilita" quando si carica il provider per la prima volta. Per risolvere questo problema, vai su "Strumenti" - "Opzioni" - "Strumenti F #" - "Tipo Provider" e abilita il provider del tipo (seleziona "Trusted").

  • La DLL è bloccata dal sistema operativo. Infine, se lo dll proviene da una fonte non attendibile, Windows potrebbe bloccarlo (questo accade soprattutto se si scarica un file zip ed estratto il file utilizzando Windows). Per sbloccare il file, vai alle proprietà del file e fai clic su "Sblocca". C'è un good description here..

9

Aggiungere un riferimento nello script alla cartella dei pacchetti nuget contenente FSharp.Data.dll. Quella cartella contiene anche la DLL designer (FSharp.Data.DesignTime.dll)

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

La cosa che mi ha buttato fuori è che VS mi dà linee ondulate non appena inizio a digitare quello (cioè #r ""). In realtà sta analizzando la stringa in fase di progettazione. Così quando finalmente ho trovato la dll, la linea ondulata è andata via. – mac10688

Problemi correlati