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