Господа.
Четыре дня не могу найти ответ на очень важный для себя вопрос.
Имеется сервер на Ubuntu, на котором в данный момент стоит сайт.
Есть программа написанная на C#, сейчас это просто exe-файл с парой библиотек.
Суть такова, у программы нет интерфейса, просто вводится через CMD команда, в которой указывается имя exe файла, файл который необходимо обработать и тип вывода. После выполнения это команды в папке создается JSON файл.
Program_name.exe file_name.format --fileoutput
Теперь это все нужно повторить на сервере:
- Пользователь загружает файл через форму на сайте
- Запускается exe файл командой в которой указанно имя загруженного файла
- Создается JSON файл с которым я в дальнейшем смогу работать.
Толкового ответа я так и не нашел, каким образом это все можно провернуть на сервере с Ubuntu.
Ибо заводить еще один сервер на Windows для это дела как по мне полный бред, когда я уверен, что можно сделать это намного проще.
И чём поможет без сорцов? Это не среда выполнения виндовых бинарников, а набор библиотек, фактически.
Можно попробовать собрать .NET приложение с его помощью в Linux, но не запустить готовое и собранное под win.
Рантайм рантайму рознь. Его точно достаточно, чтобы выполнять произвольные нативные виндовые бинарники?
Wine да, mono очень сомнительно. А без сорцов будет не портировать под него конкретное приложение.
Если в сабже не используются специфичные для windows вещи, то вероятность +\- одинакова: после открытия исходников net framework, бОльшая часть используется и в моно (а вот те же винформы эмулируются на линуксе), а также моно теперь тоже майкрософт...
Впрочем, не имея бинарника, конкретных выводов не сделать, да.
Для консольной программы может сработать вариант с Mono (пакет mono-runtime). Если при запуске будет exception по поводу нехватающих зависимостей-библиотек, то нужно установить пакет mono-complete.
Запускать так:
mono Program_name.exe file_name.format --fileoutput