Creazione di pacchetti di simboli legacy (.symbols.nupkg)

Importante

Il nuovo formato consigliato per i pacchetti di simboli è l'estensione snupkg. Vedere Creazione di pacchetti di simboli (estensione snupkg).
.symbols.nupkg è ancora supportato, ma solo per motivi di compatibilità.

Oltre a creare pacchetti per nuget.org o altre origini, NuGet supporta anche la creazione di pacchetti di simboli associati che possono essere pubblicati nei server di simboli.

Creazione di un pacchetto di simboli legacy

Per creare un pacchetto di simboli legacy, seguire queste convenzioni:

  • Assegnare al pacchetto principale (con il codice) il nome {identifier}.nupkg e includere tutti i file tranne i file .pdb.
  • Denominare il pacchetto {identifier}.symbols.nupkg di simboli legacy e includere la DLL dell'assembly, .pdb i file XMLDOC, i file di origine (vedere le sezioni seguenti).

È possibile creare entrambi i pacchetti con l'opzione -Symbols, da un file .nuspec o da un file di progetto:

nuget pack MyPackage.nuspec -Symbols

nuget pack MyProject.csproj -Symbols

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.

Struttura del pacchetto di simboli legacy

Un pacchetto di simboli legacy può avere come destinazione più framework di destinazione nello stesso modo in cui fa un pacchetto di libreria, quindi la struttura della cartella deve essere esattamente la stessa del lib pacchetto primario, inclusi .pdb solo i file insieme alla DLL.

Ad esempio, un pacchetto di simboli legacy destinato a .NET 4.0 e Silverlight 4 avrà questo layout:

\lib
    \net40
        \MyAssembly.dll
        \MyAssembly.pdb
    \sl40
        \MyAssembly.dll
        \MyAssembly.pdb

I file di origine vengono quindi inseriti in una speciale cartella separata denominata src, che deve seguire la relativa struttura del repository di origine. Ciò è dovuto al fatto che i file PDB contengono i percorsi assoluti dei file di origine usati per compilare la DLL corrispondente e devono essere rilevati durante il processo di pubblicazione. Un percorso di base (prefisso di percorso comune) può essere rimosso. Si consideri, ad esempio, una libreria compilata da questi file:

C:\Projects
    \MyProject
        \Common
            \MyClass.cs
        \Full
            \Properties
                \AssemblyInfo.cs
            \MyAssembly.csproj (producing \lib\net40\MyAssembly.dll)
        \Silverlight
            \Properties
                \AssemblyInfo.cs
            \MySilverlightExtensions.cs
            \MyAssembly.csproj (producing \lib\sl4\MyAssembly.dll)

Oltre alla lib cartella, un pacchetto di simboli legacy deve contenere questo layout:

\src
    \Common
        \MyClass.cs
    \Full
        \Properties
            \AssemblyInfo.cs
    \Silverlight
        \Properties
            \AssemblyInfo.cs
        \MySilverlightExtensions.cs

Riferimento ai file nel file nuspec

Un pacchetto di simboli legacy può essere compilato in base alle convenzioni, da una struttura di cartelle come descritto nella sezione precedente o specificandone il files contenuto nella sezione del manifesto. Ad esempio, per compilare il pacchetto mostrato nella sezione precedente, usare il codice seguente nel file .nuspec:

<files>
    <file src="Full\bin\Debug\*.dll" target="lib\net40" />
    <file src="Full\bin\Debug\*.pdb" target="lib\net40" />
    <file src="Silverlight\bin\Debug\*.dll" target="lib\sl40" />
    <file src="Silverlight\bin\Debug\*.pdb" target="lib\sl40" />
    <file src="**\*.cs" target="src" />
</files>

Vedi anche