Mari kita bagi menjadi dua pertanyaan: cara mengatur variabel lingkungan dan cara menggabungkan kerangka kerja asli dalam aplikasi MonoMac.
Menetapkan Variabel Lingkungan
Anda dapat mengatur variabel lingkungan di bagian LSEnvironment
pada Info.plist
aplikasi Anda, seperti ini:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.TableViewTest</string>
<key>CFBundleName</key>
<string>TableViewTest2</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>10.6</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>LSEnvironment</key>
<dict>
<key>Foo</key>
<string>Bar</string>
</dict>
</dict>
</plist>
Sepertinya file itu harus diedit secara manual satu kali dan menambahkan setidaknya satu variabel lingkungan.
File tersebut secara otomatis dibuat oleh MonoDevelop, jadi yang perlu Anda lakukan hanyalah menambahkan bagian LSEnvironment
.
Setelah itu, Anda dapat mengeditnya di MonoDevelop: buka opsi proyek, "Aplikasi Mac OS X", "Lanjutan".
Menggabungkan Kerangka Kerja Asli dalam Aplikasi MonoMac
Anda tidak perlu mengatur variabel lingkungan apa pun untuk menggabungkan kerangka kerja asli dalam Aplikasi MonoMac, ada cara yang lebih mudah dan bersih untuk melakukannya, yang juga mirip dengan cara kerja di Objective C.
Saya membuat aplikasi pengujian kecil, yang menggabungkan kerangka kerja dalam versi asli Aplikasi Objective C dan dalam aplikasi MonoMac.
Hal pertama yang perlu Anda lakukan adalah menggabungkan kerangka kerja Anda dengan aplikasi. Saat ini tidak ada cara untuk melakukan ini secara otomatis di MonoDevelop, jadi Anda perlu menyalin file secara manual atau menggunakan skrip pasca-pembuatan (lihat copy-framework.sh
dalam contoh saya).
Saya akan merekomendasikan untuk memasukkan kerangka kerja ke YourApp.app/Contents/Frameworks/YourFramework.framework
karena itulah cara XCode menanganinya; lihat juga Dokumentasi Apple.
Untuk mereferensikan pustaka di dalam bundel aplikasi Anda, Anda dapat menggunakan `@executable_path' (lihat halaman manual sebelumnya).
Saya akan merekomendasikan untuk membuat file app.config menggunakan <dllmap>
, sehingga Anda tidak perlu memasukkan nama path apa pun ke dalam kode Anda, sehingga memudahkan untuk mengubah versi kerangka kerja. Contohnya:
<configuration>
<dllmap dll="TestFramework" target="@executable_path/../Frameworks/TestFramework.framework/TestFramework" />
</configuration>
Jika perpustakaan sebenarnya di dalam kerangka kerja Anda dimulai dengan lib
atau diakhiri dengan .so
/ .dylib
, maka Anda harus menentukan nama itu (misalnya, dllmap di atas tidak akan mengajukan TestFramework.framework/libTestFramework.dylib
). Ini adalah bug di Mono, yang baru saja saya perbaiki.
person
Martin Baulig
schedule
11.10.2012
System.Environment.SetEnvironmentVariable
tidak berfungsi di Mono? - person David Heffernan   schedule 11.10.2012