Condividi tramite


Creare pacchetti .NET Standard e .NET Framework con Visual Studio 2015

Nota: Visual Studio 2017 è consigliato per lo sviluppo di librerie .NET Standard. Visual Studio 2015 può funzionare, ma in questa versione gli strumenti .NET Core hanno raggiunto solo lo stato di anteprima. Per utilizzare NuGet 4.x+ e Visual Studio 2017, vedere Creare e pubblicare un pacchetto con Visual Studio 2017.

La libreria .NET Standard è una specifica formale delle API .NET che devono essere disponibili in tutti i runtime .NET, per creare in questo modo maggiore uniformità nell'ecosistema .NET. La libreria .NET Standard definisce un set uniforme di API della libreria di classi base per tutte le piattaforme .NET da implementare, indipendentemente dal carico di lavoro. Consente agli sviluppatori di produrre codice utilizzabile in tutti i runtime .NET e riduce, se non elimina, le direttive di compilazione condizionale specifiche della piattaforma nel codice condiviso.

Questa guida illustra la creazione di un pacchetto NuGet destinato a .NET Standard Library 1.4 o .NET Framework 4.6. Una libreria .NET Standard 1.4 funziona in .NET Framework 4.6.1, in Universal Windows Platform 10, in .NET Core e in Mono/Xamarin. Per informazioni dettagliate, vedere la tabella di mapping .NET Standard (documentazione di .NET). È possibile scegliere altre versioni della libreria .NET Standard.

Prerequisiti

  1. Visual Studio 2015 Update 3

  2. (Solo .NET Standard) .NET Core SDK

  3. Interfaccia della riga di comando di NuGet. Scaricare la versione più recente di nuget.exe da nuget.org/downloads, salvandola in una posizione di propria scelta. Aggiungere quindi tale posizione alla variabile di ambiente PATH, se necessario.

    Nota

    Poiché nuget.exe è di per sé lo strumento dell'interfaccia della riga di comando e non un programma di installazione, assicurarsi di salvare il file scaricato dal browser invece di eseguirlo.

Creare il progetto di libreria di classi

  1. In Visual Studio File > Nuovo > Project espandere il nodo Windows Visual C#>, selezionare Libreria di classi (portabile), modificare il nome in AppLogger e selezionare OK.

    Create new class library project

  2. Nella finestra di dialogo Aggiungi libreria di classi portabile visualizzata selezionare le opzioni per .NET Framework 4.6 e ASP.NET Core 1.0. (Se la destinazione è .NET Framework, è possibile selezionare qualsiasi opzione appropriata.)

  3. Se la destinazione è .NET Standard, fare clic con il pulsante destro del AppLogger (Portable) mouse su in Esplora soluzioni, scegliere Proprietà, selezionare la scheda Libreria, quindi selezionare Target .NET Platform Standard nella sezione Targeting (Destinazione). Questa azione richiede di confermare l'operazione e in seguito è possibile selezionare .NET Standard 1.4 (o un'altra versione disponibile) nell'elenco a discesa:

    Setting the target to .NET Standard 1.4

  4. Fare clic sulla scheda Compilazione, impostare Configurazione su Release e selezionare la casella File di documentazione XML.

  5. Aggiungere il codice al componente, ad esempio:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    
  6. Impostare la configurazione su Versione, compilare il progetto e controllare che nella cartella bin\Release vengano creati i file DLL e XML.

Creare e aggiornare il file con estensione nuspec

  1. Aprire un prompt dei comandi, passare alla cartella contenente la cartella AppLogger.csproj (di un livello inferiore rispetto alla posizione del file .sln) ed eseguire il comando spec di NuGet per creare il file AppLogger.nuspec iniziale:

    nuget spec
    
  2. Aprire AppLogger.nuspec in un editor e aggiornarlo in modo che corrisponda a quanto segue, sostituendo YOUR_NAME con un valore appropriato. Il <id> valore, in particolare, deve essere univoco tra nuget.org (vedere le convenzioni di denominazione descritte in Creazione di un pacchetto. Tenere inoltre presente che è anche necessario aggiornare i tag relativi all'autore e alla descrizione o si verifica un errore durante il passaggio di creazione del pacchetto.

    <?xml version="1.0"?>
    <package >
        <metadata>
        <id>AppLogger.YOUR_NAME</id>
        <version>1.0.0</version>
        <title>AppLogger</title>
        <authors>YOUR_NAME</authors>
        <owners>YOUR_NAME</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Awesome application logging utility</description>
        <releaseNotes>First release</releaseNotes>
        <copyright>Copyright 2018 (c) Contoso Corporation. All rights reserved.</copyright>
        <tags>logger logging logs</tags>
        </metadata>
    </package>
    
  3. Aggiungere gli assembly di riferimento al file .nuspec, in particolare la DLL della libreria e il file XML IntelliSense:

    Se la destinazione è .NET Standard, le voci vengono visualizzate in modo simile al seguente:

    <!-- Insert below <metadata> element -->
    <files>
        <file src="bin\Release\AppLogger.dll" target="lib\netstandard1.4\AppLogger.dll" />
        <file src="bin\Release\AppLogger.xml" target="lib\netstandard1.4\AppLogger.xml" />
    </files>
    

    Se la destinazione è .NET Framework, le voci vengono visualizzate in modo simile al seguente:

    <!-- Insert below <metadata> element -->
    <files>
        <file src="bin\Release\AppLogger.dll" target="lib\net46\AppLogger.dll" />
        <file src="bin\Release\AppLogger.xml" target="lib\net46\AppLogger.xml" />
    </files>
    
  4. Fare clic con il pulsante destro del mouse sulla soluzione e scegliere Compila soluzione per generare tutti i file per il pacchetto.

Dichiarazione delle dipendenze

Se sono presenti dipendenze da altri pacchetti NuGet, elencarle nell'elemento <dependencies> del manifesto con gli elementi <group>. Ad esempio, per dichiarare una dipendenza da NewtonSoft.Json 8.0.3 o versione successiva, aggiungere quanto segue:

<!-- Insert within the <metadata> element -->
<dependencies>
    <group targetFramework="uap">
        <dependency id="Newtonsoft.Json" version="8.0.3" />
    </group>
</dependencies>

La sintassi dell'attributo version qui indica che la versione 8.0.3 o successiva è accettabile. Per specificare intervalli di versioni diversi, vedere Controllo delle versioni dei pacchetti.

Aggiunta di un file leggimi

Creare il file readme.txt, inserirlo nella cartella radice del progetto e farvi riferimento nel file .nuspec:

<?xml version="1.0"?>
<package >
    <metadata>...
    </metadata>
    <files>
    <file src="readme.txt" target="" />
    </files>
</package>

Visual Studio visualizza il file readme.txt quando il pacchetto viene installato in un progetto. Il file non viene visualizzato quando viene installato in progetti .NET Core o per i pacchetti che vengono installati come dipendenza.

Creare un pacchetto per il componente

Dopo avere completato il file .nuspec che fa riferimento a tutti i file da includere nel pacchetto, è possibile eseguire il comando pack:

nuget pack AppLogger.nuspec

Questo codice genera AppLogger.YOUR_NAME.1.0.0.nupkg. Aprendo il file in uno strumento come NuGet Package Explorer ed espandendo tutti i nodi, vengono visualizzati i contenuti seguenti (per .NET Standard):

NuGet Package Explorer showing the AppLogger package

Suggerimento

Un file .nupkg è solo un file ZIP con un'estensione diversa. È anche possibile esaminare i contenuti del pacchetto, modificando .nupkg in .zip, ma si ricordi di ripristinare l'estensione prima di caricare un pacchetto in nuget.org.

Per rendere disponibile il pacchetto ad altri sviluppatori, seguire le istruzioni riportate in Pubblicare un pacchetto.

Si noti che pack richiede Mono 4.4.2 su Mac OS X e non funziona nei sistemi Linux. In un Mac è anche necessario convertire i nomi di percorso di Windows nel file .nuspec in percorsi di tipo Unix.