Запуск моно-программы без ввода 'mono foo.exe'

При запуске программы .net в Ubuntu я должен ввести «mono foo.exe» вместо простого foo.exe или двойного щелчка по значку. Есть ли способ просто запустить foo.exe?

13
задан 6 January 2011 в 05:04

4 ответа

Вы можете связать расширение файла .exe на Наутилусе с /usr/bin/mono

.
0
ответ дан 6 January 2011 в 05:04

Создайте скрипт запуска.

Откройте текстовый редактор и добавьте следующее:

#!/bin/bash
mono foo.exe &

В зависимости от настроек может потребоваться использовать полный путь к файлу foo.exe.

Сохраните файл, например, как foo.sh.

Сделайте его исполняемым:

sudo chmod a+x foo.sh

Теперь вы сможете запустить foo.exe, дважды щелкнув по foo.sh.

0
ответ дан 6 January 2011 в 05:04

Я знаю, что это старый вопрос, но я нашел его через Google, и это заставило меня задуматься. Это серьезный хак, но вы можете скачать

https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh

и добавьте следующее к .bashrc

source ~/.bash-preexec.sh
preexec() {
  if [[ $1 =~ [^\s]+\.exe$ ]]; then
    eval "$1() { return 1; }"
    export -f $1
    /usr/bin/mono $1
  fi
}
precmd() { [[ $1 =~ [^\s]+\.exe$ ]]; unset -f $1; }
0
ответ дан 6 January 2011 в 05:04

Помогает ли эта ссылка? Запуск Mono

Из проекта Mono при использовании binfmt:

Регистрация .exe в качестве не собственных двоичных файлов (только для Linux)

[ 1112] Поскольку это особенность Linux, мы не рекомендуем разработчикам развертывать это решение, так как это ограничит переносимость их скриптов.

Кроме того, этот механизм не работает в соответствии с Руководством по развертыванию приложений .

Вы также можете внести изменения в масштабе всей системы и использовать binfmt, чтобы зарегистрировать исполняемые файлы как не собственные двоичные файлы. Затем, при попытке запустить exe-файл, ядро ​​запустит моно-интерпретатор для обработки команды. Binfmt также можно использовать для запуска исполняемых файлов Windows с помощью WINE или файлов Java .class с использованием JVM. Чтобы зарегистрировать exe в ядре:

Станьте пользователем root и включите модуль binfmt в вашем ядре с помощью этой команды:

sudo apt-get install binfmt-support
modprobe binfmt_misc

Кроме того, вы можете добавить команду modprobe в ваш /etc/rc.local загрузочный скрипт, чтобы он выполнялся при загрузке.

Добавьте строку ниже в свой файл /etc/fstab:

binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none

Затем, при загрузке системы выполните следующую команду:

echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register

Обязательно отметьте свою. exe-файлы также выполняются в файловой системе:

chmod +x myprogram.exe

Обратите внимание, что это не меняет ваше ядро, а только модули, которые оно загружает при загрузке вашей системы. Другими словами, вы все равно можете обновить ядро, не беспокоясь о потере этих изменений. Аналогичным образом вы можете обновить среду выполнения Mono, не затрагивая ни один из методов вызова, перечисленных в этом разделе.

0
ответ дан 6 January 2011 в 05:04

Другие вопросы по тегам:

Похожие вопросы: