При запуске программы .net в Ubuntu я должен набрать «mono foo.exe» вместо простого foo.exe или дважды щелкнуть значок. Есть ли способ просто запустить foo.exe?
При запуске программы .net в Ubuntu я должен набрать «mono foo.exe» вместо простого foo.exe или дважды щелкнуть значок. Есть ли способ просто запустить foo.exe?
Ответы:
Эта ссылка помогает? Бег Моно
Из Mono Project об использовании binfmt:
Регистрация .exe как неродных двоичных файлов (только для Linux)
Поскольку это особенность 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, не затрагивая ни один из методов вызова, перечисленных в этом разделе.
FATAL: Module binfmt not found
в 12.04
Создайте скрипт запуска.
Откройте текстовый редактор, добавьте это:
#!/bin/bash
mono foo.exe &
В зависимости от настроек может потребоваться использовать полный путь к файлу foo.exe.
Сохраните файл, например, как foo.sh
.
Сделайте его исполняемым:
sudo chmod a+x foo.sh
Теперь вы сможете запустить foo.exe двойным щелчком мыши foo.sh
.
Вы можете связать расширение файла «.exe» на Nautilus для выполнения /usr/bin/mono
Я знаю, что это старый вопрос, но я нашел его через 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; }