Paquetes opcionales con código ejecutable

Los paquetes opcionales con código ejecutable son útiles para dividir una aplicación grande o compleja, o para agregarlos a una aplicación que ya se haya publicado. Con Visual Studio 2017, versión 15.7 y .NET Native 2.1, puedes cargar código ejecutable de paquetes opcionales tanto de C++ como de C#.

Requisitos previos

  • Visual Studio 2019 o Visual Studio 2017 (versión 15.7 o posterior)
  • Windows 10, versión 1709 o posterior
  • SDK de Windows 10, versión 1709 o posterior

A fin de obtener las herramientas de desarrollo más recientes, vea Descargas y herramientas para Windows 10.

Nota:

Para enviar una aplicación que use paquetes opcionales o conjuntos relacionados con la Store, necesitará permiso. Los paquetes opcionales y los conjuntos relacionados se pueden usar para aplicaciones empresariales de línea de negocio (LOB) o aplicaciones empresariales sin permiso del Centro de partners si no se envían a la Store. Para obtener el permiso necesario a fin de enviar una aplicación que usa paquetes opcionales y conjuntos relacionados, vea Soporte técnico para desarrolladores de Windows.

Nota:

Los paquetes opcionales que contienen código ejecutable deben formar parte de un conjunto relacionado. No podrá ejecutar código desde un paquete opcional a menos que forme parte de un conjunto relacionado.

Paquetes opcionales de C++ con código ejecutable

Para cargar código desde un paquete opcional de C++, vea el repositorio OptionalPackageSample en GitHub. OptionalPackageDLL muestra cómo crear un proyecto con código que se puede ejecutar desde el paquete principal. El proyecto MyMainApp muestra cómo cargar código desde el archivo OptionalPackageDLL.dll.

Paquetes opcionales de C# con código ejecutable

Para empezar a compilar un paquete de código opcional en C#, siga estos pasos a fin de configurar la solución:

  1. Crea una aplicación para UWP con la versión mínima establecida en el SDK de Windows 10 Fall Creators Update (compilación 16299) o superior.

  2. Agregue un nuevo proyecto de paquete de código opcional (Windows universal) a la solución. Asegúrese de que la versión mínima y la versión de destino coinciden con la de la aplicación principal.

  3. Si tiene previsto enviar sus aplicaciones a la Store, haga clic con el botón secundario en ambos proyectos y seleccione Store -> Asociar aplicación con la Store...

  4. Abra el archivo Package.appxmanifest de la aplicación principal y busque el valor Identity Name. Anote este valor para el paso siguiente.

  5. Abra el archivo Package.appxmanifest del paquete de aplicación opcional y busque el valor uap3:MainAppPackageDependency Name. Actualice el valor uap3:MainAppPackageDependency Name para que coincida con el valor Identity Name del paquete de aplicación principal del paso anterior.

    Este es un ejemplo del elemento Identity desde el elemento Package.appxmanifest de la aplicación principal.

    <Identity Name="12345.MainAppProject" Publisher="CN=PublisherName" Version="1.0.0.0" />
    

    El elemento uap3:MainPackageDependency del paquete de aplicación opcional debe actualizarse para que coincida con el elemento Identity de la aplicación principal.

    <uap3:MainPackageDependency Name="12345.MainAppProjectTest" />
    
  6. Agregue un archivo Bundle.mapping.txt a la aplicación principal. Siga los pasos de la sección Conjuntos relacionados para crear un conjunto relacionado que contenga ambas aplicaciones.

  7. Compile el proyecto del paquete opcional y vaya a la carpeta Referencia del paquete en la salida de la compilación, que se encuentra en ..\[PathToOptionalPackageProject]\bin\[architecture]\[configuration]\Reference. Tenga en cuenta que puede elegir cualquier arquitectura en la ruta de acceso a la carpeta Referencia, ya que el archivo .winmd (paso 8) es independiente de la arquitectura.

  8. Agregue una referencia del proyecto de aplicación principal al archivo .winmd que se encuentra en esta carpeta. Cada vez que cambie el área expuesta de la API en el proyecto de paquete opcional, este archivo .winmddebe actualizarse. Esta referencia proporciona al proyecto de aplicación principal la información necesaria para compilar.

  9. En el proyecto de aplicación principal, vaya a las propiedades de compilación del proyecto y seleccione Compilar con la cadena de herramientas nativa de .NET. Actualmente, solo se admite la depuración en .NET Native para la creación de paquetes de código opcional en C#. Vaya a las propiedades de depuración del proyecto y seleccione Implementar paquetes opcionales. Esto garantizará que ambos paquetes estén sincronizados cada vez que implemente el proyecto de aplicación principal.

Una vez que haya terminado con estos pasos, puede agregar código al proyecto de paquete opcional como si fuera el proyecto de un componente de WinRT administrado. Para acceder al código del proyecto de aplicación principal, llame a los métodos públicos expuestos en el proyecto de paquete opcional.