NuGet.Server
NuGet.Server è un pacchetto fornito da .NET Foundation che crea un'applicazione ASP.NET in grado di ospitare un feed di pacchetti in qualsiasi server che esegue IIS. Per semplificare, NuGet.Server crea una cartella nel server disponibile tramite HTTP(S), nello specifico OData. È semplice da configurare ed è una soluzione ideale per scenari semplici.
- Creare un'applicazione Web ASP.NET vuota in Visual Studio e aggiungere il pacchetto NuGet.Server.
- Configurare la cartella
Packages
nell'applicazione e aggiungere i pacchetti. - Distribuire l'applicazione in un server appropriato.
Le sezioni seguenti descrivono questo processo in dettaglio con C#.
In caso di ulteriori domande su NuGet.Server, creare un problema in https://github.com/nuget/NuGetGallery/issues.
Creare e distribuire un'applicazione Web ASP.NET con NuGet.Server
In Visual Studio selezionare File > nuovo > Project, cercare "applicazione Web ASP.NET (.NET Framework)", selezionare il modello corrispondente per C#.
Impostare Framework su ".NET Framework 4.6".
Assegnare all'applicazione un nome appropriato diverso da NuGet.Server, selezionare OK e nella finestra di dialogo successiva selezionare il modello Vuoto, quindi selezionare OK.
Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet.
Nell'interfaccia utente di Gestione pacchetti selezionare la scheda Sfoglia, quindi cercare e installare la versione più recente del pacchetto NuGet.Server se si è scelto come destinazione .NET Framework 4.6. È anche possibile installarlo dalla console di Gestione pacchetti con
Install-Package NuGet.Server
. Se richiesto, accettare le condizioni di licenza.L'installazione di NuGet.Server converte l'applicazione Web vuota in un'origine di pacchetto. Installa svariati altri pacchetti, crea una cartella
Packages
nell'applicazione e modificaweb.config
per includere impostazioni aggiuntive (vedere i commenti in tale file per altri dettagli).Importante
Controllare attentamente
web.config
dopo che il pacchetto NuGet.Server ha completato le modifiche al file. NuGet.Server potrebbe non sovrascrivere gli elementi esistenti e creare invece elementi duplicati. Quando in un secondo momento si prova a eseguire il progetto, tali duplicati causeranno un "Errore interno del server". Ad esempio, seweb.config
contiene<compilation debug="true" targetFramework="4.5.2" />
prima di installare NuGet.Server, il pacchetto non sovrascrive il file ma inserisce un secondo<compilation debug="true" targetFramework="4.6" />
. In tal caso, eliminare l'elemento con la versione meno recente del framework.Eseguire il sito in locale in Visual Studio (usando Avvia debug > senza eseguire debug o CTRL+F5). Nella home page sono disponibili gli URL del feed dei pacchetti, come indicato di seguito. Se vengono visualizzati errori, controllare attentamente la presenza
web.config
di elementi duplicati come indicato in precedenza.La prima volta che si esegue l'applicazione, NuGet.Server ristruttura la cartella
Packages
in modo che contenga una cartella per ogni pacchetto. Questo corrisponde al layout di archiviazione locale introdotto in NuGet 3.3 per migliorare le prestazioni. Quando si aggiungono altri pacchetti, continuare a seguire questa struttura.Dopo aver verificato la distribuzione locale, distribuire l'applicazione in qualsiasi altro sito interno o esterno, in base alle esigenze.
Dopo la distribuzione in
http://<domain>
, l'URL usato per l'origine dei pacchetti saràhttp://<domain>/nuget
.
Aggiunta di pacchetti al feed esternamente
Quando un sito NuGet.Server è in esecuzione, è possibile aggiungere i pacchetti tramite nuget push a condizione di impostare un valore di chiave API in web.config
.
Dopo l'installazione del pacchetto NuGet.Server, web.config
contiene un valore vuoto appSetting/apiKey
:
<appSettings>
<add key="apiKey" value="" />
</appSettings>
Quando apiKey
viene omesso o è vuoto, il push dei pacchetti nel feed è disabilitato.
Per abilitare questa funzionalità, impostare apiKey
su un valore (idealmente una password complessa) e aggiungere una chiave denominata appSettings/requireApiKey
con il valore true
:
<appSettings>
<!-- Sets whether an API Key is required to push/delete packages -->
<add key="requireApiKey" value="true" />
<!-- Set a shared password (for all users) to push/delete packages -->
<add key="apiKey" value="" />
</appSettings>
Se il server è già protetto o non è necessaria una chiave API per altri motivi, ad esempio quando si usa un server privato in una rete del team locale, è possibile impostare requireApiKey
su false
. Tutti gli utenti con accesso al server possono quindi eseguire il push dei pacchetti.
A partire da NuGet. Server 3.0.0, l'URL per il push dei pacchetti è stato modificato in http://<domain>/nuget
. Prima della versione 3.0.0, l'URL push era http://<domain>/api/v2/package
.
Con NuGet 3.2.1 e versioni successive, questo URL /api/v2/package
legacy è abilitato oltre a /nuget
per impostazione predefinita tramite enableLegacyPushRoute: true
l'opzione nella configurazione di avvio (NuGetODataConfig.cs
per impostazione predefinita). Si noti che questa funzionalità non funziona quando più feed sono ospitati nello stesso progetto.
Rimozione dei pacchetti dal feed
Con NuGet.Server, il comando nuget delete rimuove un pacchetto dal repository, purché si includa la chiave API con il commento.
Se si vuole invece modificare il comportamento per escludere il pacchetto dall'elenco, lasciandolo disponibile per il ripristino, modificare la chiave enableDelisting
in web.config
impostandola su true.
Configurazione della cartella dei pacchetti
Con NuGet.Server
la versione 1.5 e successive, è possibile personalizzare la cartella del pacchetto usando il appSettings/packagesPath
valore in web.config
:
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath
può essere un percorso assoluto o virtuale.
Quando packagesPath
viene omesso o lasciato vuoto, il valore predefinito per la cartella dei pacchetti è ~/Packages
.
Rendere disponibili i pacchetti quando si pubblica l'app Web
Per rendere disponibili i pacchetti nel feed quando si pubblica l'applicazione in un server, aggiungere tutti i file .nupkg
nella cartella Packages
in Visual Studio e quindi impostare per ognuno Azione di compilazione su Contenuto e Copia in directory di output su Copia sempre:
Note sulla versione
Note sulla versione per NuGet. Il server è disponibile nella pagina GitHub versione. Sono inclusi i dettagli sulle correzioni di bug e sulle nuove funzionalità aggiunte.
Supporto di NuGet.Server
Per ulteriore assistenza per l'uso di NuGet.Server, creare un problema in https://github.com/nuget/NuGetGallery/issues.