Предполагая, что Mono установлен на всех ваших целевых компьютерах, вы можете собрать (вручную) папку пакета .app, которая будет запускать ваш .exe-файл, когда пользователь дважды щелкнет по нему. Есть определенный набор вещей, которые вам нужно будет поместить в пакет .app, один из которых - это командный файл оболочки, который начнет запускать ваш .exe и будет запущен при запуске .app.
B.t.w. Visual Studio Mac и Xamarin Studio и MonoDevelop - все это в основном разные повороты на одно и то же, MonoDevelop. VS mac и XS имеют дополнительные функции, но основной базой IDE является MD. Какой бы из этих продуктов вы не использовали для компиляции своего кода, вряд ли можно было бы отличить что-то другое.
Структура основной папки .app:
MyApp.app
+-- Contents
--- Info.plist
+-- MacOS
--- MyApp
--- MyApp.exe
+-- Resources
--- MyApp.icns
Содержание следующим образом:
Info.plist является Mac OS конкретный XML-файл, который содержит описание пакета .app. Это будет выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>MyApp</string>
<key>CFBundleIconFile</key>
<string>MyApp.icns</string>
<key>CFBundleIdentifier</key>
<string>com.myapp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>My App Name</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.2.3</string>
<key>CFBundleSignature</key>
<string>xmmd</string>
<key>CFBundleVersion</key>
<string>1.2.3</string>
<key>NSAppleScriptEnabled</key>
<string>NO</string>
</dict>
</plist>
В MyApp.icns файл является файлом значок, который вы хотите использовать в качестве значка для пакета приложений.
Файл MyApp.exe - это ваш скомпилированный .NET exe.
Файл MyApp - это исполняемый командный файл, который выполняется при запуске пакета .app. Это указано в файле plist в CFBundleExecutable и должно быть исполняемым (+ x разрешениями). Это может быть так:
#!/bin/sh
DIR=$(cd "$(dirname "$0")"; pwd)
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current
export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib"
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH"
exec mono "$DIR/MyApp.exe"
Надеюсь, это поможет. Привет, Мартин.
Я также получаю exe, когда я создаю для linux и на моем ящике ubuntu с установленным моно. Я могу просто дважды щелкнуть по исполняемому файлу, чтобы запустить его. Если это не работает, возможно, вы можете создать сценарий оболочки или собственное приложение, которое запускает exe? –
Да, двойное нажатие не вызывает, я запускаю его из оболочки, и я не думаю, что пользователи будут довольны оболочкой или должны загрузить моно-фреймворк для ее запуска. Так что, я думаю, я буду строить его с Java, так как раньше я никогда не строил собственное приложение для Mac. Спасибо хоть! – ozimax06