Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
La publicación de aplicaciones .NET para macOS requiere varios pasos adicionales en comparación con otras plataformas, debido a los requisitos de seguridad de Apple.
Prerrequisitos
Antes de publicar la aplicación .NET para macOS, asegúrese de que tiene lo siguiente:
- Cuenta de desarrollador de Apple: necesaria para la firma de código y la certificación.
-
Herramientas de línea de comandos de Xcode: proporciona
codesign,altooly otras utilidades. - SDK de .NET: asegúrese de que tiene instalado el SDK de .NET más reciente.
Generación de una aplicación mediante el SDK de .NET
Use uno de los métodos descritos en la introducción a la publicación de aplicaciones .NET para generar una aplicación. Puede crear una aplicación dependiente del marco o independiente.
Firma y certificación de la aplicación
Use la documentación para desarrolladores de Apple para firmar y registrar los archivos binarios nativos de la aplicación. .NET crea un ejecutable nativo apphost como punto de entrada para tu aplicación. Este apphost debe estar firmado y, si la aplicación usa funcionalidades especiales, debe asignarse los derechos adecuados.
Derechos para aplicaciones que no se publican como Native AOT
Para las aplicaciones que no se publican como Nativo AOT, se requiere la com.apple.security.cs.allow-jit autorización.
Derechos para aplicaciones publicadas como AOT nativo
En el caso de las aplicaciones publicadas como AOT nativo, no se requieren derechos.
Permisos opcionales para la depuración y diagnósticos
Los siguientes derechos habilitan funcionalidades adicionales de depuración y diagnóstico:
-
com.apple.security.get-task-allow: necesario para la recolección de volcados concreatedumpydotnet dump. -
com.apple.security.cs.debugger: Necesario para conectar un depurador al proceso.
Advertencia
Si no se puede firmar y certificar la aplicación, es posible que la aplicación se bloquee mientras se ejecuta una operación restringida.
Archivos binarios universales
macOS admite archivos binarios universales: un único archivo Mach-O que contiene código de máquina para más de una arquitectura de CPU. macOS selecciona el segmento que coincide con el procesador actual, por lo que un archivo se ejecuta de forma nativa en equipos de apple silicon (arm64) e Intel (x64).
.NET no genera archivos binarios universales directamente. En su lugar, publica la aplicación una vez por arquitectura y combina los dos ejecutables nativos con la herramienta Apple lipo . Dos .NET modos de publicación producen un ejecutable nativo autocontenida que puede combinar de esta manera:
-
Aplicaciones de un solo archivo (
PublishSingleFile) -
Implementación nativa de AOT (
PublishAot)
Publicación de un archivo binario universal de un solo archivo
Publique la aplicación una vez por arquitectura en directorios independientes:
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
A continuación, combine los dos ejecutables y vuelva a firmar el resultado:
mkdir -p out/universal
lipo -create -output out/universal/MyApp out/osx-arm64/MyApp out/osx-x64/MyApp
codesign --force --sign - out/universal/MyApp
Una publicación de un solo archivo independiente inserta el tiempo de ejecución, los ensamblados administrados y las bibliotecas nativas en el propio archivo ejecutable, por lo que el archivo combinado es la aplicación completa. El binario universal es aproximadamente la suma de las dos entradas.
Copie los archivos restantes de uno de los directorios de salida por arquitectura (por ejemplo, appsettings.json o archivos excluidos de la agrupación) junto al ejecutable combinado.
Publicación de un binario universal AOT nativo
Los pasos son los mismos que para un solo archivo, pero reemplazan las propiedades de un solo archivo por 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
AOT nativo genera una salida mucho menor que la publicación de un solo archivo, por lo que el binario universal también es pequeño.
AOT nativo también emite un MyApp.dSYM conjunto de símbolos de depuración por arquitectura. Para mantener los símbolos de ambos segmentos, mantenga los directorios por arquitectura o combine los DWARF archivos binarios dentro de las agrupaciones con lipo.