希望这会很容易。我有一个F#项目(最新的F#CTP),其中包含两个文件(Program.fs,Stack.fs)。在Stack.fs中,我有一个简单的名称空间和类型定义
Stack.fs
namespace Col
type Stack=
...
现在,我通过声明将名称空间包含在Program.fs中
open Col
这不起作用,并给我错误“未定义名称空间或模块Col”。但是它是在同一项目中定义的。我必须错过一些明显的东西
Answers:
文件在项目中的顺序是什么?Stack.fs必须在Program.fs之前出现,以便Program.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中做到这一点是另一个问题。我必须手动编辑.fsproj文件,并在ItemGroup节点内按正确的顺序设置文件。在这种情况下,它看起来像这样:
<ItemGroup>
<Compile Include="Stack.fs" />
<Compile Include="Program.fs" />
<None Include="App.config" />
</ItemGroup>
我有同样的问题,实际上是文件的排序。但是,上面的链接没有描述如何在Visual Studio 2008 F#1.9.4.19中修复它。
如果打开模块,请确保源文件位于解决方案资源管理器中的依赖项之后。只需右键单击您的源,然后选择“删除”。然后重新添加。这将使其显示在列表的底部。希望您没有循环依赖项。
Alt+Arrow
在解决方案资源管理器中使用它来移动它们(或单击鼠标右键)。您也可以将它们移动到其他文件夹,或者创建新的文件夹等等