En el artículo sobre el trabajo con paquetes NuGet, hemos analizado todas las características de uso con el software Fast Reports. Una de las preguntas más frecuentes de nuestros clientes:
¿Cómo instalamos sus paquetes de licencia en nuestro producto usando Linux, MacOS o Windows? Con esto, ¿no tendríamos que instalar la última versión de los productos FastReport manualmente con un instalador descargado en un sitio que solo funciona en Windows?
Para solucionarlo, hemos desarrollado una solución universal - nuestro servidor privado de NuGet Fast Reports.
¿Qué es y para qué sirve?
Casi todos los paquetes que usted usa en sus proyectos están disponibles en el registro de paquetes que está al alcance del público - NuGet Gallery (nuget.org). Allí también puede encontrar diferentes versiones de demostración de nuestros paquetes, sin embargo, no hay nuestros paquetes sin las limitaciones de la versión de demostración. Por esta razón, tomamos la decisión de crear nuestro propio registro de paquetes disponible solo para los clientes de Fast Reports. Por lo tanto, para acceder a este, debe tener una cuenta de Fast Reports (con esta cuenta puede haber iniciado sesión en cpanel.fast-report.com para descargar el instalador del producto).
Adición de una fuente
Veremos algunas opciones para agregar nuestro servidor NuGet:
Pero primero vale la pena hablar sobre las diferencias entre la configuración global y la configuración local de NuGet.
NuGet.Config global y NuGet.Config local
Consideremos el proceso de recuperación de paquetes utilizados en su proyecto:
1) El NuGet busca los paquetes necesarios en la memoria caché
2) El NuGet busca los paquetes necesarios en todas las fuentes agregadas al archivo NuGet.Config, mientras que:
a) El NuGet accede al NuGet.Config local
b) El NuGet accede al NuGet.Config global
El archivo local NuGet.Config se encuentra al lado de su proyecto. En consecuencia, las fuentes agregadas solo se usarán para poder recuperar este proyecto.
A su vez, el NuGet.Config global se utilizará para todos los proyectos en este ordenador). Sin embargo, esto no es necesario para todos los proyectos.
Localización de la configuración global de NuGet.Config:
Windows: "C:\Users\{nombre_usuario}\AppData\Roaming\NuGet\NuGet.Config"
MacOS: "~/.config/NuGet/NuGet.Config"
Linux: “~/.config/NuGet/NuGet.Config”
En consecuencia, el nombre del servidor, su dirección y sus datos (correo electrónico con contraseña para este servidor) según la especificación NuGet deben introducirse en un archivo llamado NuGet.Config (o nuget.config), que se ubicará en un lugar conveniente para usted.
Almacenamiento de contraseña cifrada y contraseña no cifrada
El archivo de configuración NuGet.Config puede almacenar la contraseña de la fuente tanto en formato cifrado como en formato ClearTextPassword. En la mayoría de los casos, se recomienda almacenar la contraseña en forma cifrada, sin embargo, el cifrado se realiza utilizando la configuración del entorno externo (sistema operativo, configuración del ordenador, etc.). Por lo tanto, si transfiere este archivo de configuración a otro ordenador, la contraseña especificada no podrá descifrarse y no obtendrá acceso a la fuente. Esto debe tenerse en cuenta al elegir cómo agregar o actualizar una fuente.
A continuación, veremos las principales formas de agregar nuestra fuente a NuGet, especificando el sistema operativo compatible con este método. Además, no olvidemos los tipos de configuración disponibles y el formato de almacenamiento de la contraseña de la fuente.
.NET CLI:
(cualquier sistema operativo, cualquier configuración, cualquier tipo de almacenamiento de contraseña)
Para que este método funcione, debe tener instalado el SDK .NET Core 3.1.200 y posterior (incluido el SDK .NET 5 y posterior). Introducimos en la línea de comandos:
dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name [seleccione el nombre de la fuente sin espacios, por ejemplo: fr_nuget] --username [el correo electrónico de su cuenta Fast Reports] --password [la contraseña de su cuenta Fast Reports]
De forma predeterminada, este comando agrega la fuente al NuGet.Config global, sin embargo, puede elegir la localización del archivo de configuración y convertirlo en un archivo local por medio de la opción --configfile [la ruta al archivo de configuración].
De forma predeterminada, la contraseña de la fuente se cifra, y para almacenar la contraseña no cifrada, debe usar la opción --store-password-in-clear-text .
Ejemplo:
dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name fr_nuget --username myaccount@fast-report.com --password 1234Password5678
Puede leer más sobre este método de agregar una fuente en el sitio web de Microsoft.
Microsoft Visual Studio:
Windows, configuración global, contraseña cifrada)
Aprendemos a agregar un servidor NuGet en el ejemplo de Microsoft Visual Studio 2022. Es importante tener en cuenta que este método funciona a partir de Visual Studio 2017. En el menú, seleccione ‘Tools’, luego 'NuGet Package Manager' y abra una ventana llamada 'Package Manager Settings'.
Luego, a la izquierda, seleccionamos el elemento 'Package Sources' y hacemos clic en el botón + (add).
Introducimos en el campo 'Name' el nombre de la fuente sin espacios (por ejemplo, FastReport-NuGet), y en el campo 'Source', introducimos la dirección de la fuente: https://nuget.fast-report.com/api/v3/index.json
Hacemos clic en el botón 'OK' y luego pasamos a la ventana para agregar paquetes.
En el menú desplegable 'Package source', seleccionamos la fuente recién agregada. Luego, en la ventana de diálogo, completamos los datos de la cuenta de Fast Reports y hacemos clic en el elemento "Recordar mi contraseña".
Microsoft Visual Studio for Mac:
(macOS, configuración global, contraseña cifrada)
Consideremos el ejemplo de Microsoft Visual Studio for Mac 2019.
En el menú, seleccionamos 'Project' y abrimos la ventana ‘Manage NuGet Packages…’.
En la parte inferior del menú desplegable 'Package source', seleccionamos el elemento 'Configure Sources...'.
Hacemos clic en el botón Add y en la ventana aparecida completamos los datos:
- Name: nombre de la fuente sin espacios (por ejemplo, FastReport-Nuget);
- Location: https://nuget.fast-report.com/api/v3/index.json ;
- Username: correo electrónico de la cuenta Fast Reports;
- Password: contraseña de la cuenta de Fast Reports.
Confirmamos la adición de la fuente haciendo clic en el botón 'Add Source'.
JetBrains Rider:
(cualquier sistema operativo, configuración global, contraseña cifrada)
Consideremos el ejemplo de Rider 2021.3 en Linux Ubuntu 18.04.
Pasamos al menú ‘Tools’, ‘NuGet’ y seleccionamos el elemento 'Show NuGet Sources'.
En la ventana NuGet, en el elemento de menú 'Sources' frente a 'New feed', hacemos clic en +.
Introducimos los datos necesarios:
- Name es el nombre de la fuente sin espacios (por ejemplo, FastReport-Nuget);
- URL - https://nuget.fast-report.com/api/v3/index.json ;
- User - el correo electrónico que ha sido utilizado para crear la cuenta de Fast Reports;
- Password - la contraseña de la cuenta de Fast Reports.
Nuget.exe CLI:
(cualquier sistema operativo (MacOS/Linux requiere Mono 4.4.2 o superior), cualquier configuración, cualquier tipo de almacenamiento de contraseña)
Instalación de nuget.exe se describe en detalle en el sitio web de Microsoft. Ahora solo consideraremos los puntos importantes.
nuget sources add -name [seleccione el nombre de fuente sin espacios, por ejemplo: fr_nuget] -source “https://nuget.fast-report.com/api/v3/index.json” -username [email de su cuenta Fast Reports] -password [contraseña de su cuenta Fast Reports]
De forma predeterminada, este comando agrega la fuente al NuGet.Config global, sin embargo, se puede seleccionar la localización del archivo de configuración y convertirlo en un archivo local utilizando la opción -ConfigFile (ruta al archivo de configuración).
Inicialmente, la contraseña de la fuente se cifra, para almacenar la contraseña no cifrada, use la opción -StorePasswordInClearText
Ejemplo:
nuget sources add -name fr_nuget -source “https://nuget.fast-report.com/api/v3/index.json” -username myaccount@fast-report.com -password 1234Password5678
Puede leer más sobre este método de agregar una fuente en el sitio web de Microsoft.
Edit NuGet.Config:
(cualquier sistema operativo, cualquier configuración, contraseña no cifrada)
¡Importante! Este método de especificar su contraseña de la cuenta de Fast Reports sólo es válido en caso de que use la forma de introducción no cifrada. Dado que el archivo de configuración es un archivo XML normal. Se abre o se crea por medio de cualquier editor de texto. En el bloque 'packageSources', hay que agregar nuestra fuente con el nombre seleccionado (el uso de espacios es indeseable), por ejemplo:
<add key="FR-NuGet" value="https://nuget.fast-report.com/api/v3/index.json" />
En el bloque 'packageSourceCredentials', hay que agregar su correo electrónico y la contraseña de su cuenta de Fast Reports a un bloque con la misma key:
<FR-NuGet> <add key="Username" value="myaccount@fast-report.com" /> <add key="ClearTextPassword" value="1234Password5678" /> </FR-NuGet>
Al final, debería obtener un archivo de configuración similar (el resto de las fuentes se eliminan del ejemplo):
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="FR-NuGet" value="https://nuget.fast-report.com/api/v3/index.json" /> </packageSources> <packageSourceCredentials> <FR-NuGet> <add key="Username" value="myaccount@fast-report.com" /> <add key="ClearTextPassword" value="1234Password5678" /> </FR-NuGet> </packageSourceCredentials> </configuration>
Docker
(cualquier sistema operativo, cualquier configuración, contraseña no cifrada)
En Dockerfile, al crear una imagen docker, deberá agregar la fuente usando .NET CLI o mover el archivo de configuración Nuget.Config anteriormente preparado en el contenedor docker. Como ejemplo, usamos .NET CLI en Dockerfile para agregar la fuente.
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build ARG username ARG pass RUN dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name fr_nuget --username $username --password $pass --store-password-in-clear-text
Ahora, cuando se ejecute el comando Docker build, simplemente transferimos los parámetros necesarios:
docker build -f "./DockerTestProject/Dockerfile" --force-rm --build-arg username=myaccount@fast-report.com --build-arg pass=1234Password5678 -t dockertest:latest
¡Atención! Este método de transferencia de claves privadas y contraseñas no es seguro. Puede leer más sobre la transferencia correcta de contraseñas como argumentos de docker build en el material correspondiente.
Actualización de nombre de usuario/contraseña
Si los datos de su cuenta han cambiado, debe actualizarlos en el archivo de configuración de NuGet. Consideremos los siguientes métodos:
- .NET CLI;
- nuget.exe CLI;
- NuGet.Config.
En JetBrains Rider y Microsoft Visual Studio for Mac, el cambio de los datos del usuario es similar a la adición, con la única corrección de que es necesario actualizar la fuente ya agregada. En el caso de la conexión a través de Docker, en el método de adición anterior, es suficiente cambiar los datos del usuario al ensamblar el contenedor desde Dockerfile.
.NET CLI:
(cualquier sistema operativo, cualquier configuración, cualquier tipo de almacenamiento de contraseña)
Para que este método funcione, debe tener instalado el SDK .NET Core 3.1.200 y superior (incluido .NET 5 y superior). Introducimos en la línea de comandos:
dotnet nuget update source [el nombre de la fuente agregada anteriormente, por ejemplo: fr_nuget] --username [el correo electrónico de su cuenta Fast Reports] --password [la contraseña de su cuenta de Fast Reports]
Se supone es que este comando modifica la fuente que se agrega al NuGet.Config global. Sin embargo, se puede seleccionar la localización del archivo de configuración utilizando la opción --configfile (la ruta al archivo de configuración). De forma predeterminada, la contraseña de la fuente se cifra, para almacenar la contraseña no cifrada, use la opción -- store-password-in-clear-text
Nuget.exe CLI:
(cualquier sistema operativo (MacOS/Linux requiere Mono 4.4.2 o superior), cualquier configuración, cualquier tipo de almacenamiento de contraseña)
la Instalación de nuget.exe en detalle ya ha sido descrito anteriormente. Hay que aprender solo los puntos clave.
nuget sources update -name [el nombre de la fuente agregada anteriormente, por ejemplo: fr_nuget] -username [el correo electrónico de su cuenta Fast Reports] -password [la contraseña de su cuenta de Fast Reports]
Inicialmente, este comando modifica la fuente que se agrega al NuGet.Config global. Sin embargo, se puede seleccionar la localización del archivo de configuración utilizando la opción -ConfigFile (la ruta al archivo de configuración).
De forma predeterminada, la contraseña de la fuente se cifra, para almacenar la contraseña sin cifrar, use la opción- StorePasswordInClearText.
Edit NuGet.Config:
(cualquier sistema operativo, cualquier configuración, contraseña no cifrada)
Abriremos el archivo de configuración necesario NuGet.Config por medio de cualquier editor de texto. En el bloque 'packageSourceCredentials' con el nombre de la fuente agregada anteriormente, cambiaremos los datos "Username" y "ClearTextPassword" por los necesarios. Si en lugar de "ClearTextPassword" se aparece bloque" Password", simplemente cámbielo por "ClearTextPassword". Al final, debería resultar lo siguiente:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="FR-NuGet" value="https://nuget.fast-report.com/api/v3/index.json" /> </packageSources> <packageSourceCredentials> <FR-NuGet> <add key="Username" value="myaccount@fast-report.com" /> <add key="ClearTextPassword" value="MyNewPassword5678" /> </FR-NuGet> </packageSourceCredentials> </configuration>
Más información sobre la descarga de paquetes
De forma predeterminada, en la interfaz de su IDE verá todos los paquetes descargados en Fast Reports, la fuente privada de NuGet. Sin embargo, se deben cumplir las siguientes condiciones para cargar el paquete seleccionado: si el paquete no está al alcance del público (como FastReport.Compat, versión de demostración de los paquetes FastReport.Core, FastReport.Net.Demo, etc.), usted debe disponer de la suscripción necesaria para descargar las últimas versiones de estos paquetes.
Por ejemplo, para descargar FastReport.Core debe tener una suscripción no anterior a FastReport .NET Standard (incluyendo Professional, Enterprise o Ultimate) para descargar FastCube.Core debe tener una suscripción no anterior a FastCube .NET Standard (incluyendo Professional o Ultimate), etc.
Recuperación de paquetes en caso de suscripción caducada
Si finaliza la suscripción, puede continuar utilizando la fuente de los paquetes de Fast Reportss, pero no podrá acceder a las últimas versiones de los paquetes. Por lo tanto, la última versión disponible del paquete se determinará:
Fecha de lanzamiento de la versión seleccionada < fecha de vencimiento de la suscripción adecuada
¡Importante! Si intenta descargar un paquete con una fecha de salida posterior a la fecha de finalización de una suscripción adecuada, Fast Reports NuGet Server le propondrá la versión más reciente disponible del paquete según su suscripción. Pero no recomendamos usar una versión no disponible del paquete, ya que esto provoca Warning durante la restauración del proyecto y la demora en la descarga del paquete.