F # che definisce / utilizza un tipo / modulo in un altro file nello stesso progetto

StackOverflow https://stackoverflow.com/questions/172888

  •  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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top