Konsol uygulamalarında Xamarin. Mac bağlamaları
C# kullanarak bir kullanıcı arabirimine sahip olmayan bir gözetimsiz uygulama oluşturmak Için c# ' de bazı Apple Native API 'Leri kullanmak istediğiniz bazı senaryolar vardır.
Mac uygulamaları için proje şablonları, NSApplication.Init() öğesine yapılan çağrısı tarafından izlenen bir çağrı içerir NSApplication.Main(args) , genellikle şöyle görünür:
static class MainClass {
static void Main (string [] args)
{
NSApplication.Init ();
NSApplication.Main (args);
}
}
InitXamarin. Mac çalışma zamanını hazırlık çağrısı olan çağrı, Main(args) uygulamayı klavye ve fare olaylarını alacak ve uygulamanızın ana penceresini gösteren Cocoa uygulaması ana döngüsünü başlatır. Main' A çağrı, Cocoa kaynaklarını bulmayı, TopLevel penceresini hazırlamayı ve programın bir uygulama paketinin parçası olmasını bekler (uzantıya sahip bir dizinde dağıtılan programlar .app ve çok özel bir düzen).
Gözetimsiz uygulamaların bir kullanıcı arabirimine ihtiyacı yoktur ve bir uygulama paketinin parçası olarak çalıştırılması gerekmez.
Konsol uygulaması oluşturma
Bu nedenle, düzenli bir .NET konsol proje türüyle başlamak daha iyidir.
Birkaç şey yapmanız gerekir:
- Boş bir proje oluşturun.
- Xamarin.Mac.dll kitaplığına başvurun.
- Yönetilmeyen bağımlılığı projenize taşıyın.
Bu adımlar aşağıda daha ayrıntılı olarak açıklanmıştır:
Boş bir konsol Project oluşturun
yeni bir .net konsolu Project oluşturun, .net core çalışma zamanı altında Xamarin.Mac.dll .net core çalışma zamanı altında çalıştırılmadığından emin olun, ancak Mono çalışma zamanı ile çalışır.
Xamarin. Mac kitaplığına başvurma
Kodunuzu derlemek için Xamarin.Mac.dll bu dizinden derlemeye başvurmak isteyeceksiniz: /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/64bits/full
Bunu yapmak için, proje başvuruları ' na gidin, .NET bütünleştirilmiş kodu sekmesini seçin ve dosya sistemindeki dosyayı bulmak için Git düğmesine tıklayın . Yukarıdaki yola gidin ve sonra bu dizinden Xamarin.Mac.dll seçin.
Bu işlem, derleme zamanında Cocoa API 'Lerine erişmenizi sağlar. Bu noktada, using AppKit dosyanızın en üstüne ekleyebilir ve NSApplication.Init() yöntemini çağırabilirsiniz. Uygulamanızı çalıştırabilmeniz için yalnızca bir adım daha vardır.
Yönetilmeyen destek kitaplığını projenize taşıyın
Uygulamanızın çalışması için önce Xamarin.Mac destek kitaplığını projenize taşımanız gerekir. Bunu yapmak için projenize yeni bir dosya ekleyin (proje seçenekleri ' ne tıklayın, Ekle' yi seçin ve var olan dosyayı ekleyin) ve bu dizine gidin:
/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/SDKs/Xamarin.macOS.sdk/lib
Burada, libxammac. dylibdosyasını seçin. Kopyalama, bağlama veya taşıma seçenekleri sunulur. Bağlama beğendim, ancak aynı zamanda, çalışma de kopyalanıyor. Ardından, dosyayı seçmeniz gerekir ve özellik panelinde (özellik paneli görünür değilse, oluştur bölmesini görüntüle > ' yi seçin), > bölümüne gidin ve Çıkış Dizinine Kopyala ayarını daha yeniyse kopyalaolarak ayarlayın.
Artık Xamarin. Mac uygulamanızı çalıştırabilirsiniz.
Bin dizininizdeki sonuç şöyle görünür:
Xamarin.Mac.dll
Xamarin.Mac.pdb
consoleapp.exe
consoleapp.pdb
libxammac.dylib
Bu uygulamayı çalıştırmak için, aynı dizindeki tüm bu dosyalara ihtiyacınız olacak.
Dağıtım için tek başına uygulama oluşturma
Kullanıcılarınıza tek bir yürütülebilir dosya dağıtmak isteyebilirsiniz. Bunu yapmak için, mkbundle aracı kullanarak çeşitli dosyaları kendi içinde bulunan bir yürütülebilir dosyaya getirebilirsiniz.
İlk olarak, uygulamanızın derlendiğinden ve çalıştığından emin olun. Sonuçlardan memnun olduktan sonra komut satırından aşağıdaki komutu çalıştırabilirsiniz:
$ mkbundle --simple -o /tmp/consoleapp consoleapp.exe --library libxammac.dylib --config /Library/Frameworks/Mono.framework/Versions/Current/etc/mono/config --machine-config /Library/Frameworks/Mono.framework/Versions/Current//etc/mono/4.5/machine.config
[Output from the bundling tool]
$ _
Yukarıdaki komut satırı çağrısında, -o Bu seçenek oluşturulan çıktıyı belirtmek için kullanılır, bu durumda geçirilir /tmp/consoleapp . Bu artık, tek başına dağıtabileceğiniz ve mono veya Xamarin. Mac üzerinde dış bağımlılıkları olmayan tek başına bir uygulamadır. Bu, tamamen kendi içinde kapsanan bir yürütülebilir dosyadır.
Komut satırı kullanılacak machine.config dosyayı ve sistem genelinde bir kitaplık eşleme yapılandırma dosyasını el ile belirtti. Bunlar tüm uygulamalar için gerekli değildir, ancak .NET ' in daha fazla özelliği kullandığınızda kullanıldıkları gibi bunları paketleyip gruplamak uygun değildir.
Project-daha az derlemeler
Kendi kendine içerilen bir Xamarin. Mac uygulaması oluşturmak için tam bir proje gerekmez, ayrıca işi yapmak için basit UNIX derleme görevleri dosyalarını kullanabilirsiniz. Aşağıdaki örnek, basit bir komut satırı uygulaması için derleme görevleri dosyasını nasıl ayarlayakullanabileceğinizi göstermektedir:
XAMMAC_PATH=/Library/Frameworks/Xamarin.Mac.framework/Versions/Current//lib/x86_64/full/
DYLD=/Library/Frameworks/Xamarin.Mac.framework/Versions/Current//lib
MONODIR=/Library/Frameworks/Mono.framework/Versions/Current/etc/mono
all: consoleapp.exe
consoelapp.exe: consoleapp.cs Makefile
mcs -g -r:$(XAMMAC_PATH)/Xamarin.Mac.dll consoleapp.cs
run: consoleapp.exe
MONO_PATH=$(XAMMAC_PATH) DYLD_LIBRARY_PATH=$(DYLD) mono --debug consoleapp.exe $(COMMAND)
bundle: consoleapp.exe
mkbundle --simple consoleapp.exe -o ncsharp -L $(XAMMAC_PATH) --library $(DYLD)/libxammac.dylib --config $(MONODIR)/config --machine-config $(MONODIR)/4.5/machine.config
Yukarıdaki Makefile üç hedef verilmiştir:
makeprogramı oluşturacakmake rungeçerli dizinde programı derleyip çalıştıracakmake bundlekendi içinde bir çalıştırılabilir dosya oluşturur