Ubuntu üzerinde bir .net programı çalıştırırken sadece foo.exe yerine "mono foo.exe" yazmanız veya simgeyi çift tıklamanız gerekiyor. Sadece foo.exe'yi çalıştırmanın bir yolu var mı?
Ubuntu üzerinde bir .net programı çalıştırırken sadece foo.exe yerine "mono foo.exe" yazmanız veya simgeyi çift tıklamanız gerekiyor. Sadece foo.exe'yi çalıştırmanın bir yolu var mı?
Yanıtlar:
Bu bağlantı yardımcı oluyor mu? Mono Koşu
Binfmt kullanımı üzerine Mono Projesinden:
.Exe dosyasını yerel olmayan ikili dosyalar olarak kaydetme (yalnızca Linux)
Bu Linux'a özgü bir özellik olduğundan, geliştiricilerin komut dosyalarının taşınabilirliğini sınırlayacağı için bu çözümü dağıtmasını önermiyoruz.
Ayrıca, bu mekanizma Uygulama Dağıtım Yönergeleri'nin amaçladığı gibi çalışmaz .
Ayrıca sistem çapında bir değişiklik yapabilir ve exe dosyalarını yerel olmayan ikili dosyalar olarak kaydetmek için binfmt kullanabilirsiniz. Ardından, bir exe dosyasını başlatmaya çalışırken, çekirdek komutu işlemek için mono yorumlayıcıyı çalıştıracaktır. Binfmt, WINE kullanarak Windows yürütülebilir dosyalarını veya JVM kullanarak Java .class dosyalarını başlatmak için de kullanılabilir. Exe'yi çekirdeğe kaydetmek için:
Kök olun ve çekirdeğinizdeki binfmt modülünü şu komutla açın:
sudo apt-get install binfmt-support
modprobe binfmt_misc
Ayrıca, önyükleme komut dosyanıza modprobe
komutu eklemek isteyebilirsiniz /etc/rc.local
, böylece önyükleme sırasında yürütülür.
Aşağıdaki satırı /etc/fstab
dosyanıza ekleyin :
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Ardından, sisteminizin önyüklemede aşağıdaki komutu çalıştırmasını sağlayın:
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
.Exe dosyalarınızı dosya sisteminde de yürütülebilir olarak işaretlediğinizden emin olun:
chmod +x myprogram.exe
Bunun çekirdeğinizi değiştirmediğini, yalnızca sisteminizi başlattığınızda yüklediği modülleri unutmayın. Başka bir deyişle, bu değişiklikleri kaybetme konusunda endişelenmeden çekirdeğinizi yükseltebilirsiniz. Benzer şekilde, bu bölümde listelenen çağırma yöntemlerinden herhangi birini etkilemeden Mono çalışma zamanınızı yükseltebilirsiniz.
FATAL: Module binfmt not found
12.04 de
Bir başlangıç komut dosyası oluşturun.
Düz bir metin düzenleyici açın, şunu ekleyin:
#!/bin/bash
mono foo.exe &
Kurulumunuza bağlı olarak, foo.exe dosyasının tam yolunu kullanmanız gerekebilir.
Dosyayı örneğin olarak kaydedin foo.sh
.
Yürütülebilir yap:
sudo chmod a+x foo.sh
Şimdi foo.exe dosyasını çift tıklatarak başlatabilirsiniz foo.sh
.
Nautilus'ta yürütülecek '.exe' dosya uzantısını, /usr/bin/mono
Bu eski bir soru olduğunu biliyorum ama ben google üzerinden buldum ve beni düşündürdü. Bu büyük bir hack ama indirebilirsiniz
https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh
evinize ekleyin ve aşağıdakileri .bashrc'ye ekleyin
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; }