Подтвердить что ты не робот

F #, определяющий/использующий тип/модуль в другом файле в том же проекте

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

Stack.fs

namespace Col

type Stack= 
 ...

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

open Col

Это не работает и дает мне ошибку "Пространство имен или модуль Col не определены". Тем не менее он определен в рамках одного и того же проекта. Я должен упустить что-то очевидное.

4b9b3361

Ответ 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 не помечены как "Компилировать". Вы можете увидеть это, просмотрев выходные данные сборки и посмотреть, все ли ваши файлы там и в правильном ли порядке.

Мне пришлось вручную убедиться, что некоторые файлы помечены как "Компилировать", и пришлось вручную перемещать их вверх и вниз до тех пор, пока они не "взяли".