Изолировать модули в одном проекте F # с помощью папок - возможно ли это? - PullRequest
1 голос
/ 24 июня 2019

Мне нравится, как F # требует упорядочивать файлы и код в порядке зависимости, потому что это препятствует бессмысленной связи.

У меня плоский список исходных файлов atm (упрощенно):

Common.fs
Workflow1.fs
Workflow2.fs

И я хочу пойти на шаг дальше.Во-первых, упорядочите файлы следующим образом (VS 2017 не может перемещать папки вверх и вниз, нужно редактировать .fsproj, но это другая история - по крайней мере, это возможно):

Common.fs
Workflow1\Impl1.fs
Workflow2\Impl2.fs

Я ожидал Impl1.fs и Impl2.fs должны быть полностью изолированы друг от друга, потому что их папки не находятся в родительских / дочерних отношениях, но Impl2.fs может легко видеть типы и функции из Impl1.fs: просто откройте модуль, и они доступны

* 1010Есть ли какие-либо методы, чтобы держать их изолированными?Можно разделить проект на три части, однако я предпочитаю сохранять DLL как единицу развертывания: рабочие процессы малы, и в идеале я бы хотел избежать множества крошечных DLL-файлов.

Ответы [ 2 ]

3 голосов
/ 25 июня 2019

Похоже, вы хорошо понимаете, какие у вас есть варианты.Вы не пропустите ничего больше.Следовательно, ответ на ваш вопрос «нет»

2 голосов
/ 25 июня 2019

Насколько я знаю, вы не можете таким образом изолировать папки. Однако, если вы хотите сохранить их изолированными во время компиляции, но развернуть их как единое целое, вы можете создавать отдельные проекты и использовать Fody или ILMerge для объединения сборок после компиляции.

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