Запуск скомпилированной F # -программы с Mono на Linux - PullRequest
0 голосов
/ 24 марта 2020

Я установил mono и fsharp на свой CentOS-бокс через

$ sudo yum install mono-complete fsharp

и установил tnet, следуя указаниям

https://docs.microsoft.com/en-us/dotnet/core/install/linux-package-manager-centos7

Я скомпилировал свою программу Hello World F # с помощью

$ fsharpc Program.fs

Теперь, когда я пытаюсь запустить это с моно:

$ mono Program.exe 
Can't find custom attr constructor image: /home/gbuday/ion/Program.exe mtoken: 0x0a000005 due to: Could not load file or assembly 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
File name: 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
File name: 'FSharp.Core, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

Когда я запускаю это с

$ dotnet run Program.exe 
Hello World from F#!

работает без сбоев. Не ясно, как моно и до tnet связаны в этой настройке.

Смогу ли я запустить мой скомпилированный код F # с моно? Что мне для этого нужно?

1 Ответ

2 голосов
/ 24 марта 2020

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

Mono необходимо, только если вы используете Xamarin для создания мобильных приложений на F # сегодня. Если вы делаете что-то еще на Linux машине, я рекомендую использовать. NET Core и. NET CLI для всего. Для начала я рекомендую следовать этому руководству: https://docs.microsoft.com/dotnet/fsharp/get-started/get-started-command-line

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

...