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.

  1. Creare un'applicazione Web ASP.NET vuota in Visual Studio e aggiungere il pacchetto NuGet.Server.
  2. Configurare la cartella Packages nell'applicazione e aggiungere i pacchetti.
  3. 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

  1. In Visual Studio selezionare File > nuovo > Project, cercare "applicazione Web ASP.NET (.NET Framework)", selezionare il modello corrispondente per C#.

    Select the .NET Framework web project template

  2. Impostare Framework su ".NET Framework 4.6".

    Setting the target framework for a new project

  3. 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.

    Select the empty web project

  4. Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet.

  5. 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.

    Installing the NuGet.Server package

  6. 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 modifica web.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, se web.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.

  7. 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.

    Default home page for an application with NuGet.Server

  8. 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.

  9. Dopo aver verificato la distribuzione locale, distribuire l'applicazione in qualsiasi altro sito interno o esterno, in base alle esigenze.

  10. 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:

Copying packages to the Packages folder in the project

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.