F # PowerPack и распределение - PullRequest
3 голосов
/ 29 мая 2010

Мне нужны рациональные числа произвольной точности, которые, как я понял, доступны в F # powerpack. Мой вопрос о механике распределения; моя программа должна иметь возможность компилировать и запускать как минимум на Windows / .Net и Linux / Mono, так как у меня есть потенциальные пользователи на обеих платформах. Насколько я понимаю, лучшая процедура это:

  1. Загрузите пакет питания .zip, а не установщик.

  2. Скопируйте DLL в каталог моей программы.

  3. Скопируйте прилагаемый файл лицензии в каталог моей программы, чтобы убедиться, что все находится над платой.

  4. Объявляйте ссылки и продолжайте использовать нужные мне функции.

  5. Отправьте вышеуказанные файлы вместе с моим исходным кодом и двоичным файлом, и, поскольку DLL использует байт-код, она будет отлично работать на любой платформе.

Это правильная процедура? Я что-то упустил?

1 Ответ

5 голосов
/ 29 мая 2010

По сути, вы правы, рациональные числа произвольной точности доступны только в 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).

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