Per quanto riguarda
http://msdn.microsoft.com/en-us/library/dd233169.aspx
[file .fsx vengono] utilizzati per includere il codice di prova informale in F # senza aggiungere il codice di test per la vostra applicazione, e senza creare un progetto separato per esso. Per impostazione predefinita, i file di script non sono inclusi nella build di un progetto anche quando fanno parte di un progetto.
Questo significa che se si dispone di un progetto con la struttura sufficiente per essere avere tali problemi con le dipendenze, non si dovrebbe usare .fsx
file, anziché scrivere moduli/namespace usando .fs
file. Cioè, dovresti davvero compilarli in un assembly.
L'interprete interattivo f # genera l'assembly per ogni file caricato. Se si carica un file due volte, il bytecode viene generato due volte e i tipi sono diversi anche se hanno la stessa definizione e lo stesso nome. Ciò significa che non è possibile condividere tipi tra due file .fsx, a meno che uno di essi non includa l'altro.
Quando si #load
un file che ha lo stesso tipo come quelli già presenti nel proprio ambiente, l'interprete interattivo F # è possibile utilizzare due strategia diversa:
- rifiutano di caricare il file se i conflitti con i nomi esistenti si pone (lamentando che alcuni elementi siano già definiti)
- inserire i nomi nello spazio dei nomi
FS_00xx
(in modo che siano in realtà tipi diversi da quelli già caricati), eventualmente open
nello spazio dei nomi risultante in modo che i nomi siano disponibili dalla sessione interattiva.
Dal file FSX dovrebbero essere utilizzati come prova informale è più user-friendly per usare il secondo approccio (ci sono anche ragione tecnica per cui viene utilizzato il secondo approccio, prevalentemente a carico .net
tipo VM sistema e il fatto che i tipi esistenti non possono essere modificati in fase di runtime).
Forse con moduli in file '.fs'? – NoIdeaHowToFixThis
@NoIdeaHowToFixQuesto ha già provato varie combinazioni di moduli e spazi dei nomi - non sembra avere alcun effetto - gli spazi dei nomi vengono semplicemente preceduti con FS_00xx invece –
Puoi pubblicare del codice dove vengono visualizzati questi spazi dei nomi FS_00xx? Se uso un file '.fs' con un namespace, funziona bene: http://pastebin.com/QZ2m0WUe –