F#在同一个项目的另一个文件中定义/使用一个types/模块

这将有希望是一个容易的。 我有一个F#项目(最新的F#CTP)与两个文件(Program.fs,Stack.fs)。 在Stack.fs中我有一个简单的命名空间和types定义

Stack.fs

namespace Col type Stack= ... 

现在我尝试通过声明来在Program.fs中包含名称空间

 open Col 

这不起作用,并给我错误“名称空间或模块Col未定义”。 然而它在同一个项目中被定义。 我必须失去一些明显的东西

项目中的文件顺序是什么? 在Program.fs的Program.fs之前,Stack.fs需要能够“看到”它。

另见开始

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!444.entry

和结束

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!347.entry

我有同样的问题,你是对的,编译器的文件的顺序。 您可以使用与.fs文件关联的上下文菜单中的“上移/下移”项目来代替“移除和添加”模式。 (Alt-Up和Alt-Down是大多数标准键绑定中的快捷键)

以上所有内容都是正确的,但在VS2013中如何做到这一点是另外一个问题。 我不得不在Notepad ++中编辑我的.fsproj文件,并设置一个ItemGroup节点的顺序。 在这种情况下,它看起来像这样:

 <ItemGroup> <Compile Include="Stack.fs" /> <Compile Include="Program.fs" /> <None Include="App.config" /> </ItemGroup> 

我有同样的问题,这确实是文件的顺序。 但是,上面的链接没有描述如何在Visual Studio 2008 F#1.9.4.19中修复它。

如果您打开一个模块,请确保您的源文件在解决scheme资源pipe理器中的依赖关系之后 。 只需右键单击源并select删除。 然后重新添加它。 这将使其出现在列表的底部。 希望你没有循环依赖。