Код F# во вложенной папке App_Code

У меня есть проект с двумя подпапками в папке App_code, одна для VB и одна для F# (файлы C# находятся в корне). Я могу нормально обращаться к классам VB (через пространство имен), но не к коду F#. У кого-нибудь была такая проблема, и если да, то как вы ее исправили?

Приложение: код F#, которого нет в папке App_Code, работает нормально. Это как если бы компилятор и IDE не видели код F#, который находится в подпапке папки App_Code с именем FS_Code. Я добавил элемент codeSubDirectories

<codeSubDirectories>                
<add directoryName="VB_Code"/>
    <add directoryName="FS_Code"/>
</codeSubDirectories>

Код VB в подпапке VB_Code прекрасно компилируется.


person Rodrick Chapman    schedule 20.11.2008    source источник


Ответы (6)


Обратите внимание, что по умолчанию, если вы не объявляете пространство имен или модуль, код F# верхнего уровня заканчивается в модуле с тем же именем, что и имя файла. Смотрите первую часть

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!444.entry

для деталей.

person Brian    schedule 20.11.2008

Шаг 3: Прибыль!!

Серьезно, простое размещение исходного файла F# под App_Code ничего не даст.

Какие подготовительные задачи вы выполнили, чтобы код F# мог быть скомпилирован приложением ASP.NET?

person leppie    schedule 20.11.2008

Возможно проверить

http://cs.hubfs.net/blogs/tomasp/archive/2008/03/08/aspnet_in_fsharp.aspx

person Brian    schedule 20.11.2008

Откройте фактически сгенерированные сборки через Reflector - посмотрите, каково фактическое пространство имен.

person Ana Betts    schedule 20.11.2008

Я считаю, что добавление элемента конфигурации ‹compiler ... /› для языка F# в web.config должно помочь (см. ссылку, опубликованную Брайаном) — однако я сомневаюсь, что вы увидите что-нибудь в C# IntelliSense. Однако мне непонятно, как можно ссылаться на код на одном языке из кода на другом...

Вы также можете проверить эту ссылку: http://shailkpatel.blogspot.com/2007/10/multiple-programming-languages-in.html

person Tomas Petricek    schedule 20.11.2008
comment
Элемент компилятора находится в файле web.config, а код F#, которого нет в каталоге App_Code, работает нормально. Это как если бы компилятор и IDE не могли видеть код в подпапке Fsharp каталога App_Code (хотя они прекрасно видят код подпапки VB. - person Rodrick Chapman; 22.11.2008

Прошло некоторое время с тех пор, как я задал этот вопрос, но я думаю, что проблема в том, что компилятор F # не находится в $ PATH (я установил его в нестандартном месте).

person Rodrick Chapman    schedule 01.12.2009