Im Artikel über den Umgang mit NuGet-Paketen haben wir alle Besonderheiten bei der Verwendung der Fast Reports-Software erläutert. Eine der häufigsten Fragen unserer Kunden lautet:
Wie können wir Ihre Lizenzpakete in unserem Produkt unter Linux, MacOS oder Windows installieren. Müssten wir gleichzeitig die neueste Version der FastReport-Produkte nicht manuell mit einem von der Webseite heruntergeladenen Installationsprogramm installieren, das nur unter Windows funktioniert?
Wir würden gerne dafür eine universelle Lösung in Form vom unseren privaten Fast Reports NuGet-Server anbieten.
Fast alle Pakete, die Sie in Ihren Projekten verwenden, befinden sich im öffentlichen Package Registry - NuGet Gallery (nuget.org). Dort finden Sie auch verschiedene Demoversionen unserer Pakete, aber es gibt dort keine von unseren Paketen ohne Demo-Einschränkungen. Deswegen haben wir die Entscheidung getroffen, ein eigenes Package Registry zu erstellen, das nur für Fast Reports-Kunden verfügbar ist. Um darauf zuzugreifen, müssen Sie dementsprechend über ein Fast Reports-Konto verfügen (mit diesem Konto können Sie auf cpanel.fast-report.com zugreifen, um das Produkt- Installationsprogramm herunterzuladen).
Wir werden uns verschiedene Optionen für das Hinzufügen unseres NuGet-Servers ansehen:
Doch zunächst sollte man die Unterschiede zwischen globalen und lokalen NuGet-Konfigurationen erläutern.
Betrachten wir, wie in Ihrem Projekt verwendete Pakete wiederhergestellt werden:
1) NuGet sucht im Cache nach den benötigten Paketen
2) NuGet sucht nach den erforderlichen Paketen in allen Quellen, die der NuGet.Config-Datei hinzugefügt wurden, wobei:
a) NuGet greift auf die lokale NuGet.Config-Datei zu
b) NuGet greift auf die globale NuGet.Config-Datei zu
Die lokale NuGet.Config-Datei befindet sich neben Ihrem Projekt. Die dort hinzugefügten Quellen werden daher nur für die Wiederherstellung dieses Projekts verwendet.
Die globale NuGet.Config wird dagegen für alle Projekte auf diesem Computer verwendet. Dies ist jedoch nicht bei allen Projekten erforderlich.
Speicherort der globalen NuGet.Config:
Windows: "C:\Users\{Benutzername}\AppData\Roaming\NuGet\NuGet.Config"
MacOS: "~/.config/NuGet/NuGet.Config"
Linux: “~/.config/NuGet/NuGet.Config”
Dementsprechend sollten der Servername und -adresse und Ihre Angaben (E-Mail mit Passwort für diesen Server) gemäß der NuGet-Spezifikation in die NuGet.Config-Datei (oder nuget.config) eingetragen werden, die sich an einem für Sie günstigen Ort befindet.
Die NuGet.Config-Datei kann das Quellpasswort sowohl in verschlüsselter Form als auch im ClearTextPassword-Format speichern. In den meisten Fällen wird empfohlen, das Passwort in verschlüsselter Form zu speichern, wobei die Verschlüsselung über externe Umgebungseinstellungen (Betriebssystem, Computerkonfiguration usw.) erfolgt. Wenn Sie also diese Konfigurationsdatei auf einen anderen Rechner übertragen, kann das angegebene Passwort nicht entschlüsselt werden, und Sie erhalten keinen Zugriff auf die Quelle. Dies muss bei der Entscheidung, wie die Quelle hinzugefügt oder aktualisiert werden soll, berücksichtigt werden.
Als Nächstes sehen wir uns die wichtigsten Möglichkeiten zum Hinzufügen unserer Quelle zu NuGet an und geben das Betriebssystem an, das mit dieser Methode kompatibel ist. Wir werden uns auch die verfügbaren Konfigurationstypen und das Format zum Speichern des Quellpassworts ansehen.
(jedes Betriebssystem, jede Konfiguration, jede Art der Passwortspeicherung)
Für diese Methode muss das .NET Core SDK 3.1.200 und höher (einschließlich .NET SDK 5 und höher) installiert sein. Geben Sie in der Befehlszeile folgendes ein:
dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name [Wählen Sie einen Quellennamen ohne Leerzeichen, z. B.: fr_nuget] --username [Email-Adresse Ihres Fast Reports-Kontos] --password [Passwort für Ihr Fast Reports-Konto]
Standardmäßig fügt dieser Befehl die Quelle zur globalen NuGet.Config hinzu, aber Sie können den Speicherort der Konfigurationsdatei auswählen und sie mit dem Parameter --configfile [Pfad zur Konfigurationsdatei] lokal machen.
Das Quellpasswort ist standardmäßig verschlüsselt, und um das Passwort in unverschlüsselter Form zu speichern, müssen Sie den Parameter--store-password-in-clear-text verwenden.
Beispiel:
dotnet nuget add source https://nuget.fast-report.com/api/v3/index.json --name fr_nuget --username myaccount@fast-report.com --password 1234Password5678
(Windows, globale Konfiguration, verschlüsseltes Passwort)
Betrachten wir das Hinzufügen eines NuGet-Servers am Beispiel von Microsoft Visual Studio 2022. Es ist wichtig zu beachten, dass diese Methode ab Visual Studio 2017 funktioniert. Wählen Sie im Menü "Tools", dann "NuGet Package Manager" aus und öffnen Sie das Fenster ‘Package Manager Settings’.
Wählen Sie dann links ‘Package Sources’ aus und drücken Sie auf die Schaltfläche + (add).
Geben Sie in das Feld ‘Name’ den Quellennamen ohne Leerzeichen (z.B. FastReport-NuGet) und in das Feld ‘Source’ die Quelladresse https://nuget.fast-report.com/api/v3/index.json ein.
Klicken Sie auf die Schaltfläche ‘ОК’ und gehen Sie dann zum Fenster zum Hinzufügen von Paketen.
Wählen Sie aus dem Dropdown-Menü ‘Package source’ die soeben hinzugefügte Quelle aus. Geben Sie dann Ihre Fast Reports-Kontodaten in das Dialogfeld ein und klicken Sie auf “Mein Passwort speichern”.
(macOS, globale Konfiguration, verschlüsseltes Passwort)
Nehmen wir Microsoft Visual Studio for Mac 2019 als Beispiel.
Wählen Sie ‘Project’ im Menü aus und öffnen Sie das Fenster ‘Manage NuGet Packages…’.
Wählen Sie unten im Dropdown-Menü ‘Package source’ den Punkt ‘Configure Sources…’ aus.
Klicken Sie auf Add und geben Sie in das Fenster folgende Daten ein:
- Name: Quellenname ohne Leerzeichen (z.B. FastReport-Nuget);
- Location: https://nuget.fast-report.com/api/v3/index.json ;
- Username: Email-Adresse des Fast Reports-Kontos;
- Password: Passwort für das Fast Reports-Konto.
Bestätigen Sie das Hinzufügen der Quelle mit der Schaltfläche ‘Add Source’.
(jedes Betriebssystem, globale Konfiguration, verschlüsseltes Passwort)
Nehmen wir Rider 2021.3 auf Linux Ubuntu 18.04 als Beispiel.
Gehen Sie zum Menü ‘Tools’, ‘NuGet’ und wählen Sie ‘Show NuGet Sources’ aus.
Klicken Sie im NuGet-Fenster unter ‘Sources’ neben ‘New feed’ auf +.
Geben Sie die notwendigen Daten ein:
- Name - Quellenname ohne Leerzeichen (z.B. FastReport-Nuget);
- URL - https://nuget.fast-report.com/api/v3/index.json ;
- User - Email-Adresse des Fast Reports-Kontos;
- Password - Passwort für das Fast Reports-Konto.
(jedes Betriebssystem (macOS/Linux benötigt Mono 4.4.2 oder höher), jede Konfiguration, jede Art von Passwortspeicherung)
Die Installation von nuget.exe ist auf der Microsoft-Webseite ausführlich beschrieben. Im Folgenden werden nur die wichtigsten Punkte behandelt.
nuget sources add -name [Wählen Sie einen Quellennamen ohne Leerzeichen, z. B.: fr_nuget] -source “https://nuget.fast-report.com/api/v3/index.json” -username [Email-Adresse Ihres Fast Reports-Kontos] -password [Passwort für Ihr Fast Reports-Konto]
Standardmäßig fügt dieser Befehl die Quelle der globalen NuGet.Config hinzu, Sie können jedoch den Speicherort der Konfigurationsdatei auswählen und sie mit dem Parameter -ConfigFile (Pfad zur Konfigurationsdatei) lokal machen.
Grundsätzlich wird das Quellenpasswort verschlüsselt, um das Passwort in unverschlüsselter Form zu speichern, verwenden Sie den Parameter -StorePasswordInClearText
Beispiel:
nuget sources add -name fr_nuget -source “https://nuget.fast-report.com/api/v3/index.json” -username myaccount@fast-report.com -password 1234Password5678
(jedes Betriebssystem, jede Konfiguration, unverschlüsseltes Passwort)
Wichtig! Mit dieser Methode können Sie Passwort für Ihr Fast Reports-Konto nur in unverschlüsselter Form angeben, weil die Konfigurationsdatei eine einfache XML-Datei ist. Sie kann mit jedem Texteditor geöffnet oder erstellt werden. Im ‘packageSources’ Block müssen Sie unsere Ressource mit dem gewählten Namen hinzufügen (Leerzeichen sind unerwünscht), z.B.:
<add key="FR-NuGet" value="https://nuget.fast-report.com/api/v3/index.json" />
Fügen Sie Ihre Email-Adresse zum ‘packageSourceCredentials’ Block und das Passwort für das Fast Reports-Konto zum Block mit dem gleichen key hinzu:
<FR-NuGet> <add key="Username" value="myaccount@fast-report.com" /> <add key="ClearTextPassword" value="1234Password5678" /> </FR-NuGet>
Am Ende sollten Sie eine ähnliche Konfigurationsdatei erhalten (andere Quellen sind aus dem Beispiel entfernt):
<?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>
(jedes Betriebssystem, jede Konfiguration, unverschlüsseltes Passwort)
In Dockerfile müssen Sie bei der Erstellung eines Docker-Images eine Quelle entweder mit der.NET CLI hinzufügen oder die vorgefertigte NuGet.Config-Datei in den Docker-Container verschieben. Verwenden wir als Beispiel die .NET-CLI in einer Dockerfile, um die Quelle hinzuzufügen.
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
Wenn Sie nun den Befehl docker build ausführen, übergeben Sie einfach die erforderlichen Parameter:
docker build -f "./DockerTestProject/Dockerfile" --force-rm --build-arg username=myaccount@fast-report.com --build-arg pass=1234Password5678 -t dockertest:latest
Achtung! Diese Methode der Weitergabe von geheimen Schlüsseln und Passwörtern ist nicht sicher. Über die korrektere Übergabe von Passwörtern als Docker-Build-Argumente können Sie im zugehörigen Material lesen.
Wenn sich Ihre Kontodaten geändert haben, müssen Sie sie auch in der NuGet-Konfigurationsdatei aktualisieren. Betrachten wir die folgenden Möglichkeiten:
In JetBrains Rider und Microsoft Visual Studio for Mac erfolgt die Änderung von Benutzerdaten ähnlich wie das Hinzufügen, mit dem einzigen Unterschied, dass Sie die bereits hinzugefügte Quelle aktualisieren müssen. Wenn die Verbindung über Docker nach der oben genannten Methode des Hinzufügens erfolgt, müssen Sie nur die Benutzerdaten beim Erstellen des Containers aus Dockerfile ändern.
(jedes Betriebssystem, jede Konfiguration, jede Art von Passwortspeicherung)
Für diese Methode muss das .NET Core SDK 3.1.200 und höher (einschließlich .NET 5 und höher) installiert sein. Geben Sie in der Befehlszeile folgendes ein:
dotnet nuget update source [Name der zuvor hinzugefügten Quelle, z.B.: fr_nuget] --username [Email-Adresse Ihres Fast Reports-Kontos] --password [Passwort für Ihr Fast Reports-Konto]
Es wird davon ausgegangen, dass dieser Befehl die Quelle ändert, die zur globalen NuGet.Config hinzugefügt wird. Sie können jedoch den Speicherort der Konfigurationsdatei mit dem Parameter –configfile (Pfad zur Konfigurationsdatei) auswählen. Standardmäßig wird das Quellpasswort verschlüsselt, um das Passwort unverschlüsselt zu speichern, verwenden Sie den Parameter --store-password-in-clear-text.
(jedes Betriebssystem (macOS/Linux benötigt Mono 4.4.2 oder höher), jede Konfiguration, jede Art von Passwortspeicherung)
Die Installation von nuget.exe ist bereits ausführlich beschrieben worden. Es lohnt sich nur, einen Blick auf die Schlüsselpunkte zu werfen.
nuget sources update -name [Name der zuvor hinzugefügten Quelle, z.B: fr_nuget] -username [Email-Adresse Ihres Fast Reports-Kontos] -password [Passwort für Ihr Fast Reports-Konto]
Grundsätzlich ändert dieser Befehl die Quelle, die zur globalen NuGet.Config hinzugefügt wird. Sie können jedoch den Speicherort der Konfigurationsdatei mit dem Parameter -ConfigFile (Pfad zur Konfigurationsdatei) auswählen.
Standardmäßig wird das Quellpasswort verschlüsselt, um das Passwort unverschlüsselt zu speichern, verwenden Sie den Parameter -StorePasswordInClearText.
(jedes Betriebssystem, jede Konfiguration, unverschlüsseltes Passwort)
Öffnen Sie die erforderliche NuGet.Config-Datei mit einem beliebigen Texteditor. Ändern Sie im Block ‘packageSourceCredentials’ mit dem Namen der zuvor hinzugefügten Quelle die Werte von “Username” und “ClearTextPassword” auf erforderliche Werte. Wenn Sie den Block "Password" anstelle von "ClearTextPassword" haben, ersetzen Sie ihn einfach durch “ClearTextPassword”. Am Ende soll es so aussehen:
<?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>
Standardmäßig sehen Sie in der Schnittstelle Ihrer IDE alle Pakete, die in der privaten NuGet-Quelle von Fast Reports heruntergeladen sind. Um das ausgewählte Paket herunterzuladen, müssen Sie jedoch die folgende Bedingung erfüllen: Wenn das Paket nicht öffentlich verfügbar ist (wie FastReport.Compat, Demoversionen von FastReport.Core, FastReport.Net.Demo usw.), müssen Sie über das erforderliche Abonnement verfügen, um die neuesten Versionen dieser Pakete herunterladen zu können.
Um beispielsweise FastReport.Core herunterzuladen, müssen Sie mindestens ein FastReport .NET Standard (einschließlich Professional, Enterprise oder Ultimate) Abonnement haben, um FastCube.Core herunterzuladen, müssen Sie mindestens ein FastCube .NET Standard (einschließlich Professional oder Ultimate) Abonnement haben, usw.
Wenn Ihr Abonnement abläuft, können Sie die Fast Reports-Paketquelle weiterhin nutzen, haben aber keinen Zugriff auf die neueste Paketversion. Also wird die letzte verfügbare Paketversion durch die folgende Bedingung bestimmt:
Veröffentlichungsdatum der ausgewählten Version < Ablaufdatum des berechtigten Abonnements
Wichtig! Wenn Sie versuchen, ein Paket herunterzuladen, dessen Veröffentlichungsdatum nach dem Ablaufdatum Ihres berechtigten Abonnements liegt, gibt Ihnen der Fast Reports NuGet-Server die letzte verfügbare Version des Pakets entsprechend Ihrem Abonnement. Wir raten jedoch davon ab, auf eine nicht verfügbare Paketversion zu verlinken, da dies zu einer Warnung bei der Wiederherstellung des Projekts führt und den Download des Pakets verzögert.