По сути, вы правы, рациональные числа произвольной точности доступны только в PowerPack (BigInteger
является частью .NET 4.0, но рациональные по-прежнему зависят от F #).
Однако вам также нужно будет распространять вашу программу с распространяемой средой выполнения F # (то есть сборкой FSharp.Core.dll
). Он содержит некоторые базовые типы F # (например, типы, используемые для представления функций), которые не являются частью стандартной среды выполнения .NET.
Когда вы добавляете ссылку на ваш проект, компилятор включает имя и версию библиотеки, на которую ссылаются, в ваше приложение. Когда приложение запускается, среда выполнения пытается найти библиотеку в разных местах. Таким образом, чтобы развернуть ваше приложение как в .NET, так и в Mono, вам нужно (как-то) распространять ваше приложение вместе с FSharp.Core.dll
и FSharp.PowerPack.dll
.
Установщики F # Redistributable и F # PowerPack помещают библиотеку в GAC (глобальный кэш сборок), который используется всеми приложениями .NET на компьютере. В Mono вы можете получить тот же результат, используя инструмент gacutil (из командной строки). В этом случае вам нужно скопировать их куда-нибудь (где угодно) и запустить этот инструмент. Ваша заявка найдет их в GAC.
В качестве альтернативы, если вы помещаете сборки в ту же папку, что и ваше приложение (файл exe
), то и .NET, и Mono должны найти их правильно, и это должно работать. Я считаю, что это не рекомендуется по причинам управления версиями (например, глобально установленный файл может быть легко обновлен), но я не думаю, что лицензия запрещает эту форму развертывания.
Кажется, что для создания распространяемого .NET / Mono было бы проще использовать второй метод (так как он допускает простое развертывание xcopy).