Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Publikování aplikací .NET pro macOS vyžaduje v porovnání s jinými platformami několik dalších kroků kvůli požadavkům na zabezpečení společnosti Apple.
Požadavky
Před publikováním aplikace .NET pro macOS se ujistěte, že máte následující:
- Vývojářský účet Apple: Vyžaduje se podepisování kódu a zápis.
-
Nástroje příkazového řádku Xcode: Poskytuje
codesignaltoola další nástroje. - .NET SDK: Ujistěte se, že máte nainstalovanou nejnovější sadu .NET SDK.
Vytvoření aplikace pomocí sady .NET SDK
K vytvoření aplikace použijte jednu z metod popsaných v přehledu publikování aplikací .NET . Můžete vytvořit aplikaci závislou na rozhraní nebo samostatnou aplikaci.
Podepsání a notarizace aplikace
K podepsání a notarizaci nativních binárních souborů aplikace použijte dokumentaci apple pro vývojáře . .NET vytvoří nativní spustitelný soubor apphost jako vstupní bod pro vaši aplikaci. Tento hostitel aplikace musí být podepsaný a pokud vaše aplikace používá speciální funkce, musí mít přiřazená příslušná oprávnění.
Identita aplikace
Identita aplikace je identifikátor podepisování kódu (určený polem CFBundleIdentifier v manifestu Info.plist ), který macOS používá k přidružení rozhodnutí o přístupu a zásad ke konkrétní aplikaci.
Aplikace, které ukládají rozhodnutí o přístupu k tajemstvím nebo jiným položkám Klíčenky, musí být distribuovány a spouštěny pomocí spustitelného souboru apphost, například MyApp, nikoli pomocí spouštěče dotnet (dotnet MyApp.dll). Stav specifický pro aplikaci musí být přidružený k jedinečnému stabilnímu identifikátoru podepisování kódu. Spouštěč dotnet není pro tento scénář podporovaný.
Řešení pro správu softwaru můžou používat podpisovou identitu apphostitele vaší aplikace k použití zásad spouštění specifických pro aplikace odděleně od jiných .NET hostovaných aplikací, které používají hostitele dotnet.
Přidělte apphostu jedinečný, stabilní identifikátor pro podepisování kódu a vydání podepisujte pomocí certifikátu Developer ID Application od vašeho týmu Apple Developer. Udržujte identifikátor a tým konzistentní napříč aktualizacemi. Změna kteréhokoli z nich může vyžadovat, aby uživatelé a správci obnovili schválení.
Podrobnosti najdete v pokynech společnosti Apple k metadatům pro samostatné nástroje a podepisování jednotlivých spustitelných souborů.
Nároky na aplikace, které nejsou publikovány jako nativní AOT
U aplikací, které nejsou publikované jako Native AOT, je vyžadováno com.apple.security.cs.allow-jit oprávnění.
Nároky pro aplikace publikované jako nativní AOT
Pro aplikace publikované jako nativní AOT se nevyžadují žádná oprávnění.
Volitelná oprávnění pro ladění a diagnostiku
Následující oprávnění umožňují další možnosti ladění a diagnostiky:
-
com.apple.security.get-task-allow: Potřebné pro shromažďování výpisů screatedumpadotnet dump. -
com.apple.security.cs.debugger: Je potřeba připojit ladicí program k procesu.
Výstraha
Při nepodepsání a nenotarizování vaší aplikace může dojít k pádu aplikace při provádění omezené operace.
Univerzální binární soubory
macOS podporuje univerzální binární soubory: jeden soubor Mach-O, který obsahuje kód počítače pro více než jednu architekturu procesoru. macOS vybere řez, který odpovídá aktuálnímu procesoru, takže jeden soubor běží nativně na počítačích Apple Silicon (arm64) i Intel (x64).
.NET negeneruje univerzální binární soubory přímo. Místo toho publikujete aplikaci jednou pro každou architekturu a sloučíte tyto dva nativní spustitelné soubory s nástrojem Apple lipo . Dva režimy publikování .NET vytvářejí samostatný nativní spustitelný soubor, který můžete sloučit tímto způsobem:
-
Jednosouborové aplikace (
PublishSingleFile) -
Nasazení Native AOT (
PublishAot)
Publikovat univerzální binární soubor do jednoho souboru
Aplikaci publikujte jednou pro každou architekturu do samostatných adresářů:
dotnet publish -c Release -r osx-arm64 --self-contained true \
-p:PublishSingleFile=true -o out/osx-arm64
dotnet publish -c Release -r osx-x64 --self-contained true \
-p:PublishSingleFile=true -o out/osx-x64
Potom sloučíte dva spustitelné soubory a výsledek znovu podepíšete:
mkdir -p out/universal
lipo -create -output out/universal/MyApp out/osx-arm64/MyApp out/osx-x64/MyApp
codesign --force --sign - out/universal/MyApp
Samostatně publikovaná aplikace v jediném souboru zahrnuje runtime, spravovaná sestavení i nativní knihovny přímo ve spustitelném souboru, takže výsledný soubor představuje kompletní aplikaci. Univerzální binární soubor je zhruba součet dvou vstupů.
Zkopírujte všechny zbývající soubory z jednoho z výstupních adresářů pro jednotlivé architektury (například appsettings.json nebo soubory vyloučené z balíčku) vedle sloučeného spustitelného souboru.
Publikování nativního univerzálního binárního souboru AOT
Postup je stejný jako u jednoho souboru, ale nahraďte vlastnosti jednoho souboru takto PublishAot:
dotnet publish -c Release -r osx-arm64 -p:PublishAot=true -o out/osx-arm64
dotnet publish -c Release -r osx-x64 -p:PublishAot=true -o out/osx-x64
mkdir -p out/universal
lipo -create -output out/universal/MyApp out/osx-arm64/MyApp out/osx-x64/MyApp
codesign --force --sign - out/universal/MyApp
Nativní AOT vytváří mnohem menší výsledný soubor než publikování do jednoho souboru, takže univerzální binární soubor zůstává také malý.
Nativní AOT také pro každou architekturu vytváří balíček ladicích symbolů MyApp.dSYM. Chcete-li zachovat symboly pro obě architektury, ponechte adresáře pro jednotlivé architektury nebo slučte binární soubory uvnitř balíčků pomocí lipo.