Vazby Xamarin.Mac v konzolové aplikaci
Existují scénáře, ve kterých chcete pomocí některých nativních rozhraní API společnosti Apple v jazyce C# vytvořit bezvýcovou aplikaci – aplikaci, která nemá uživatelské rozhraní – pomocí jazyka C#.
Šablony projektů pro aplikace systému Mac zahrnují volání následované voláním metody , obvykle NSApplication.Init()NSApplication.Main(args) vypadá takto:
static class MainClass {
static void Main (string [] args)
{
NSApplication.Init ();
NSApplication.Main (args);
}
}
Volání připraví modul runtime Xamarin.Mac, volání spustí hlavní smyčku aplikace Cocoa, která připraví aplikaci na příjem událostí klávesnice a myši a zobrazí hlavní okno InitMain(args) aplikace. Volání se také pokusí vyhledat prostředky Cocoa, připraví okno nejvyšší úrovně a očekává, že program bude součástí sady aplikací (programy distribuované v adresáři s příponou a velmi specifickým Main.app rozložením).
Bezohledné aplikace nepomáhá uživatelské rozhraní a nemusí běžet jako součást sady aplikací.
Vytvoření konzolové aplikace
Proto je lepší začít s běžným typem projektu konzoly .NET.
Musíte udělat několik věcí:
- Vytvořte prázdný projekt.
- Odkazovat na Xamarin.Mac.dll knihovnu.
- Přenesete do projektu nespravovanou závislost.
Tyto kroky jsou podrobněji vysvětleny níže:
Vytvoření prázdné konzolové Project
Vytvořte novou konzolovou konzolu .NET Project, ujistěte se, že se jedná o .NET, a ne .NET Core, protože Xamarin.Mac.dll nespouštěl v modulu runtime .NET Core, běží pouze s rozhraním Mono runtime.
Odkaz na knihovnu Xamarin.Mac
Chcete-li zkompilovat kód, budete chtít odkazovat Xamarin.Mac.dll na sestavení z tohoto adresáře: /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/64bits/full
Chcete-li to provést, přejděte na odkazy na projekt, vyberte kartu Sestavení .NET a kliknutím na tlačítko Procházet vyhledejte soubor v systému souborů. Přejděte na výše uvedenou cestu a pak vyberteXamarin.Mac.dll z tohoto adresáře.
To vám poskytne přístup k rozhraním Cocoa API v době kompilace. V tomto okamžiku můžete přidat na začátek souboru a using AppKit zavolat NSApplication.Init() metodu . Před spuštěním aplikace je jenom jeden další krok.
Přenést nespravovanou knihovnu podpory do projektu
Před spuštěním aplikace je potřeba přenést knihovnu Xamarin.Mac podpory do projektu. Chcete-li to provést, přidejte do projektu nový soubor (v možnostech projektu vyberte Přidata pak Přidat existující soubor)a přejděte do tohoto adresáře:
/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/SDKs/Xamarin.macOS.sdk/lib
Tady vyberte soubor libxammac.dylib. Bude vám nabídnuta možnost kopírovat, odkazovat nebo přesouvat. Osobně rád propojuji, ale kopírování funguje také. Pak je potřeba vybrat soubor a v oblasti vlastností (pokud panel vlastností není viditelný, vyberte Zobrazit oblasti vlastností), přejděte do části Sestavení a nastavte nastavení Kopírovat do výstupního adresáře na Kopírovat, pokud je novější.>>
Teď můžete spustit aplikaci Xamarin.Mac.
Výsledek v adresáři bin bude vypadat takhle:
Xamarin.Mac.dll
Xamarin.Mac.pdb
consoleapp.exe
consoleapp.pdb
libxammac.dylib
Ke spuštění této aplikace budete potřebovat všechny tyto soubory ve stejném adresáři.
Vytvoření samostatné aplikace pro distribuci
Možná budete chtít uživatelům distribuovat jeden spustitelný soubor. K tomu můžete použít nástroj a mkbundle přetáhnou různé soubory do samostatného spustitelného souboru.
Nejprve se ujistěte, že se vaše aplikace zkompiluje a spustí. Jakmile budete s výsledky spokojeni, můžete z příkazového řádku spustit následující příkaz:
$ 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]
$ _
Ve výše uvedeném volání příkazového řádku se k zadání vygenerovaného výstupu používá možnost , v tomto případě -o jsme předli /tmp/consoleapp . Jedná se o samostatnou aplikaci, kterou můžete distribuovat a která nemá žádné externí závislosti na Mono nebo Xamarin.Mac, jedná se o plně samostatný spustitelný soubor.
Příkazový řádek ručně zadal machine.config, který se má použít, a konfigurační soubor mapování knihovny pro systém. Nejsou nezbytné pro všechny aplikace, ale je vhodné je sesbalit, protože se používají, když používáte více možností rozhraní .NET.
Project bez sestavení
K vytvoření samostatné aplikace Xamarin.Mac nepotřebujete úplný projekt. K provedení úlohy můžete použít také jednoduché unixové soubory pravidel. Následující příklad ukazuje, jak můžete nastavit soubor pravidel pro jednoduchou aplikaci příkazového řádku:
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
Výše uvedené Makefile informace poskytují tři cíle:
makesestaví program.make runsestaví a spustí program v aktuálním adresáři.make bundlevytvoří samostatný spustitelný soubor.