F # определение / использование типа / модуля в другом файле в том же проекте - PullRequest
66 голосов
/ 06 октября 2008

Надеюсь, это будет легко. У меня есть проект F # (последний F # CTP) с двумя файлами (Program.fs, Stack.fs). В Stack.fs у меня есть простое пространство имен и определение типа

Stack.fs

namespace Col

type Stack= 
 ...

Теперь я пытаюсь включить пространство имен в Program.fs, объявив

open Col

Это не работает и выдает ошибку «Пространство имен или модуль Col не определены». Все же это определено в том же проекте. Я должен упустить что-то очевидное

Ответы [ 4 ]

76 голосов
/ 06 октября 2008

В каком порядке находятся файлы в проекте? 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

41 голосов
/ 23 октября 2009

У меня были такие же проблемы, и вы правы, порядок файлов учитывается компилятором. Вместо шаблона «Удалить» и «Добавить» можно использовать элементы «Переместить вверх / Переместить вниз» в контекстном меню, связанном с файлами .fs. (Alt-Up и Alt-Down - это сочетания клавиш в большинстве стандартных сочетаний клавиш)

9 голосов
/ 03 июня 2015

Все вышеперечисленное верно, но как это сделать в VS2013 - это другой вопрос. Мне пришлось отредактировать мой .fsproj файл в Notepad ++ и установить порядок узла ItemGroup. В этом случае это будет выглядеть так:

<ItemGroup>
    <Compile Include="Stack.fs" />
    <Compile Include="Program.fs" />
    <None Include="App.config" />
</ItemGroup>
1 голос
/ 17 октября 2008

У меня была та же проблема, и это действительно был порядок файлов. Однако приведенные выше ссылки не описывают, как это исправить в Visual Studio 2008 F # 1.9.4.19.

Если вы открываете модуль, убедитесь, что ваш исходный файл имеет после зависимости в обозревателе решений. Просто щелкните правой кнопкой мыши ваш источник и выберите Удалить. Затем добавьте его снова. Это заставит его появиться внизу списка. Надеюсь, у вас нет круговых зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...