Actualización de referencias de componentes en NuGet

Importante

Component Store se interrumpió a partir del 15 de mayo de 2018 (este cierre se anunció originalmente en noviembre de 2017).

Los componentes de Xamarin ya no se admiten en Visual Studio y los deben reemplazar paquetes NuGet. Sigue las instrucciones siguientes para quitar manualmente las referencias de componentes de los proyectos.

Consulta estas instrucciones para agregar paquetes NuGet en Windows o Mac.

Hay una lista de complementos y bibliotecas populares de Xamarin disponibles para ayudar a encontrar alternativas a los componentes que no están disponibles como paquetes NuGet.

Eliminación manual de referencias de componentes

La versión 15.6 de Visual Studio y 7.4 de Visual Studio para Mac ya no admite componentes en el proyecto.

Si cargas un proyecto en Visual Studio, se muestra el cuadro de diálogo siguiente, que explica que debes quitar los componentes del proyecto manualmente:

Alert dialog explaining that a component has been found in your project and must be removed

Para quitar un componente del proyecto, haz lo siguiente:

  1. Abra el archivo .csproj. Para ello, haz clic con el botón derecho en el nombre del proyecto y selecciona Descargar proyecto.

  2. Haz clic con el botón derecho de nuevo en el proyecto descargado y selecciona Editar {nombre-proyecto}.csproj.

  3. Busca las referencias del archivo a XamarinComponentReference. Debe tener un aspecto similar al siguiente ejemplo:

    <ItemGroup>
      <XamarinComponentReference Include="advancedcolorpicker">
        <Version>2.0.1</Version>
        <Visible>False</Visible>
      </XamarinComponentReference>
      <XamarinComponentReference Include="gunmetaltheme">
        <Version>1.4.1</Version>
        <Visible>False</Visible>
      </XamarinComponentReference>
      <XamarinComponentReference Include="signature-pad">
        <Version>2.2.0</Version>
        <Visible>False</Visible>
      </XamarinComponentReference>
    </ItemGroup>
    
  4. Quita las referencias a XamarinComponentReference y guarda el archivo. En el ejemplo anterior, quitar ItemGroup por completo es seguro.

  5. Una vez guardado el archivo, haz clic con el botón derecho en el nombre del proyecto y selecciona Volver a cargar proyecto.

  6. Repite los pasos anteriores para cada proyecto de tu solución.

Advertencia

Las instrucciones siguientes solo funcionan con versiones anteriores de Visual Studio. El nodo Componentes ya no está disponible en las versiones actuales de Visual Studio 2017 o Visual Studio para Mac.

En las secciones siguientes se explica cómo actualizar las soluciones existentes de Xamarin para cambiar las referencias de componente a paquetes NuGet.

La mayoría de los componentes se dividen en una de las categorías anteriores. Si usas un componente que no parece tener un paquete NuGet equivalente, lee la sección Componentes sin una ruta de migración de NuGet siguiente.

Componentes que contienen paquetes NuGet

Muchos componentes ya contienen paquetes NuGet y la ruta de migración es simplemente eliminar la referencia del componente.

Para determinar si el componente ya incluye un paquete NuGet, haz doble clic en el componente de la solución:

Components node expanded

La pestaña Paquetes mostrará los paquetes NuGet incluidos en el componente:

Packages tab contains NuGet

Ten en cuenta que la pestaña Ensamblados estará vacía:

Assemblies tab is empty

Actualización de la solución

Para actualizar la solución, elimina la entrada Componente de la solución:

Delete component

El paquete NuGet permanecerá en el nodo Paquetes y la aplicación se compilará y ejecutará como de costumbre. En el futuro, las actualizaciones de este paquete se realizarán mediante la característica de actualización de NuGet:

Update NuGet package

Componentes con reemplazos de NuGet

Si la pestaña Ensamblados de la página de información del componente contiene entradas tal como se muestra a continuación, deberás encontrar manualmente el paquete NuGet equivalente.

Contains assemblies

Ten en cuenta que la pestaña Paquetes probablemente estará vacía:

Packages tab

Puede contener dependencias de NuGet, pero se pueden omitir.

Para confirmar que existe un paquete NuGet de reemplazo, busca en NuGet.org mediante el nombre del componente o, como alternativa, por autor.

Por ejemplo, puedes encontrar el popular paquete sqlite-net-pcl buscando lo siguiente:

Actualización de la solución

Una vez que hayas confirmado que el componente está disponible en NuGet, sigue estos pasos:

Eliminar el componente

Haz clic con el botón derecho en el componente de la solución y elige Quitar:

Remove component

Esta acción eliminará el componente y las referencias. Esto interrumpirá la compilación hasta que agregues el paquete NuGet equivalente para reemplazarlo.

Incorporación del paquete NuGet

  1. Haz clic con el botón derecho en el nodo Paquetes y elige Agregar paquetes....

  2. Busca el reemplazo de NuGet por nombre o autor:

    NuGet search

  3. Presiona Agregar paquete.

El paquete NuGet se agregará al proyecto junto con las dependencias. Esto debería corregir la compilación. Si la compilación sigue produciendo un error, investiga cada error para ver si hay diferencias de API entre el componente y el paquete NuGet.

Componentes sin una ruta de migración de NuGet

No te preocupes si no encuentras inmediatamente un reemplazo de los componentes usados en la aplicación. Los componentes existentes seguirán funcionando en Visual Studio 15.5 y el nodo Componentes aparecerá en la solución como de costumbre.

Pero las versiones futuras de Visual Studio no restaurarán ni actualizarán los componentes. Esto significa que si abres la solución en un equipo nuevo, el componente no se descargará ni instalará; y el autor no podrá proporcionarte actualizaciones. Debes planear lo siguiente:

  • Extraer los ensamblados del componente y hacer referencia a ellos directamente en el proyecto.
  • Ponerte en contacto con el autor del componente y preguntar sobre los planes para migrar a NuGet.
  • Investigar paquetes NuGet alternativos o buscar el código fuente si el componente es de código abierto.

Muchos proveedores de componentes siguen trabajando en la migración a NuGet y otros (incluidos los productos disponibles comercialmente) pueden estar investigando opciones de entrega alternativas.