F #, определяющий/использующий тип/модуль в другом файле в том же проекте
Это, надеюсь, будет легким. У меня есть проект F # (последний F # CTP) с двумя файлами (Program.fs, Stack.fs). В Stack.fs у меня есть простое пространство имен и определение типа
Stack.fs
namespace Col
type Stack=
...
Теперь я пытаюсь включить пространство имен в Program.fs, объявив
open Col
Это не работает и дает мне ошибку "Пространство имен или модуль Col не определены". Тем не менее он определен в рамках одного и того же проекта. Я должен упустить что-то очевидное.
Ответы
Ответ 1
Какой порядок файлов в проекте? 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
Ответ 2
У меня были те же проблемы, и вы правы, порядок файлов принимается компилятором. Вместо шаблона Remove and Add вы можете использовать элементы Move Up/Move Down в контекстном меню, связанном с файлами .fs. (Alt-Up и Alt-Down - это сочетания клавиш в большинстве стандартных привязок клавиш)
Ответ 3
Все вышесказанное верно, но как это сделать в VS2013, это еще один вопрос. Мне пришлось отредактировать файл .fsproj в Notepad ++ и установить порядок ItemGroup node. В этом случае это будет выглядеть так:
<ItemGroup>
<Compile Include="Stack.fs" />
<Compile Include="Program.fs" />
<None Include="App.config" />
</ItemGroup>
Ответ 4
У меня была такая же проблема, и это было действительно упорядочение файлов. Однако вышеприведенные ссылки не описывали, как исправить это в Visual Studio 2008 F # 1.9.4.19.
Если вы открываете модуль, убедитесь, что исходный файл появился после зависимости в проводнике решений. Просто щелкните правой кнопкой мыши на своем источнике и выберите "Удалить". Затем повторно добавьте его. Это будет отображаться в нижней части списка. Надеюсь, у вас нет круговых зависимостей.
Ответ 5
Я использую Visual Studio для Mac - 8.1.4 и заметил, что некоторые файлы .fs не помечены как "Компилировать". Вы можете увидеть это, просмотрев выходные данные сборки и посмотреть, все ли ваши файлы там и в правильном ли порядке.
Мне пришлось вручную убедиться, что некоторые файлы помечены как "Компилировать", и пришлось вручную перемещать их вверх и вниз до тех пор, пока они не "взяли".