Konsol uygulamalarında Xamarin.Mac bağlamaları
C# kullanarak kullanıcı arabirimi olmayan bir uygulama oluşturmak için C# dilinde bazı Apple yerel API'lerini kullanmak istediğiniz bazı senaryolar vardır.
Mac uygulamaları için proje şablonları, çağrısının NSApplication.Init()
ardından çağrısının eklenmesini NSApplication.Main(args)
içerir ve genellikle şöyle görünür:
static class MainClass {
static void Main (string [] args)
{
NSApplication.Init ();
NSApplication.Main (args);
}
}
Xamarin.Mac çalışma zamanını hazırlama çağrısı Init
, Cocoa uygulaması ana döngüsünü başlatır. Bu çağrı Main(args)
, uygulamayı klavye ve fare olaylarını almaya hazırlar ve uygulamanızın ana penceresini gösterir. çağrısı Main
ayrıca Cocoa kaynaklarını bulmaya, bir üst düzey pencere hazırlamaya çalışır ve programın bir uygulama paketinin parçası olmasını bekler (uzantı ve çok özel bir düzen içeren .app
bir dizinde dağıtılan programlar).
Başsız uygulamaların kullanıcı arabirimine ihtiyacı yoktur ve uygulama paketinin bir parçası olarak çalıştırılması gerekmez.
Konsol uygulamasını oluşturma
Bu nedenle normal 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 getirin.
Bu adımlar aşağıda daha ayrıntılı olarak açıklanmıştır:
Boş konsol projesi oluşturma
Yeni bir .NET Konsol Projesi oluşturun, .NET Core değil.NET Core olduğundan emin olun, Xamarin.Mac.dll .NET Core çalışma zamanı altında çalışmaz, yalnızca Mono çalışma zamanıyla çalışır.
Xamarin.Mac kitaplığına başvurma
Kodunuzu derlemek için bu dizinden derlemeye Xamarin.Mac.dll
başvurmak istersiniz: /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/64bits/full
Bunu yapmak için proje başvurularına gidin, .NET Derleme sekmesini seçin ve gözat düğmesine tıklayarak dosyayı dosya sisteminde bulun. Yukarıdaki yola gidin ve ardından bu dizinden Xamarin.Mac.dll seçin.
Bu, derleme zamanında Cocoa API'lerine erişmenizi sağlayacaktır. Bu noktada, dosyanızın en üstüne ekleyebilir using AppKit
ve yöntemini çağırabilirsiniz NSApplication.Init()
. Uygulamanızı çalıştırmadan önce yalnızca bir adım daha vardır.
Yönetilmeyen destek kitaplığını projenize getirin
Uygulamanız çalışmadan önce destek kitaplığını Xamarin.Mac
projenize getirmeniz gerekir. Bunu yapmak için projenize yeni bir dosya ekleyin (proje seçeneklerinde Ekle'yi seçin ve ardından Varolan Dosyayı Ekle'yi seçin) ve şu dizine gidin:
/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/SDKs/Xamarin.macOS.sdk/lib
Burada libxammac.dylib dosyasını seçin. Kopyalama, bağlama veya taşıma seçenekleri sunulur. Kişisel olarak bağlamayı severim, ama kopyalama da işe yarar. Ardından dosyayı seçmeniz gerekir ve özellik panelinde (özellik bölmesi görünmüyorsa Görünüm>Bölmesi>Özellikleri'ni seçin), Derleme bölümüne gidin ve Daha yeniyse Çıkış Dizinine Kopyala ayarını Kopyala olarak 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 tüm bu dosyaların aynı dizinde olması gerekir.
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 aracı kullanarak mkbundle
çeşitli dosyaları bağımsız yürütülebilir dosyaya dönüştürebilirsiniz.
İ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, bu seçenek -o
oluşturulan çıkışı belirtmek için kullanılır; bu örnekte, geçtik /tmp/consoleapp
. Bu artık dağıtabileceğiniz tek başına bir uygulamadır ve Mono veya Xamarin.Mac üzerinde dış bağımlılıkları yoktur, tamamen kendi içinde bulunan bir yürütülebilir dosyadır.
Komut satırı, kullanılacak machine.config dosyasını ve sistem genelinde kitaplık eşleme yapılandırma dosyasını el ile belirtti. Tüm uygulamalar için gerekli değildir, ancak .NET'in daha fazla özelliğini kullandığınızda kullanıldıkları için bunları paketlemek uygundur
Projesiz derlemeler
Bağımsız bir Xamarin.Mac uygulaması oluşturmak için tam bir projeye ihtiyacınız yoktur, işi yapmak için basit Unix derleme dosyalarını da kullanabilirsiniz. Aşağıdaki örnek, basit bir komut satırı uygulaması için derleme dosyasını nasıl ayarlayabileceğinizi gösterir:
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 sağlar:
make
programı oluştururmake run
programı geçerli dizinde derleyip çalıştırırmake bundle
bağımsız bir yürütülebilir dosya oluşturur