F # che definisce / utilizza un tipo / modulo in un altro file nello stesso progetto
-
05-07-2019 - |
Domanda
Speriamo che sia facile. Ho un progetto F # (ultimo CTP F #) con due file (Program.fs, Stack.fs). In Stack.fs ho un semplice spazio dei nomi e la definizione del tipo
Stack.fs
namespace Col
type Stack=
...
Ora provo a includere lo spazio dei nomi in Program.fs dichiarando
open Col
Questo non funziona e mi dà l'errore " Lo spazio dei nomi o il modulo Col non è definito. " Eppure è definito all'interno dello stesso progetto. Mi manca qualcosa di ovvio
Soluzione
In che ordine sono i file nel progetto? Stack.fs deve precedere Program.fs per Program.fs per poterlo "vedere".
Vedi anche l'inizio di
http://lorgonblog.spaces.live.com/blog/ cns! 701679AD17B6D310! 444.entry
e la fine di
http://lorgonblog.spaces.live.com/blog/ cns! 701679AD17B6D310! 347.entry
Altri suggerimenti
Ho avuto gli stessi problemi e hai ragione, l'ordine del file è preso in considerazione dal compilatore. Invece del modello Rimuovi e aggiungi, è possibile utilizzare gli elementi Sposta su / Sposta giù nel menu di scelta rapida associato ai file .fs. (Alt-Up e Alt-Down sono i tasti di scelta rapida nella maggior parte delle combinazioni di tasti standard)
Tutto quanto sopra è corretto, ma come fare in VS2013 è un'altra domanda. Ho dovuto modificare il mio file .fsproj in Notepad ++ e impostare l'ordine di un nodo ItemGroup. In questo caso sarebbe simile al seguente:
<ItemGroup>
<Compile Include="Stack.fs" />
<Compile Include="Program.fs" />
<None Include="App.config" />
</ItemGroup>
Ho avuto lo stesso problema ed era proprio l'ordinamento dei file. Tuttavia, i collegamenti sopra non descrivono come risolverlo in Visual Studio 2008 F # 1.9.4.19.
Se apri un modulo, assicurati che il tuo file sorgente arrivi dopo la dipendenza in Esplora soluzioni. Basta fare clic con il tasto destro del mouse sulla fonte e selezionare Rimuovi. Quindi aggiungilo di nuovo. Questo lo farà apparire in fondo all'elenco. Spero che tu non abbia dipendenze circolari.