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í.
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.