Criando pacotes de símbolo herdado (.symbols.nupkg)
Importante
O novo formato recomendado para pacotes de símbolos é .snupkg. Veja Criando pacotes de símbolos (.snupkg). Ainda há suporte para .symbols.nupkg, mas apenas por motivos de compatibilidade.
Além de criar pacotes para nuget.org ou outras fontes, o NuGet também dá suporte à criação de pacotes de símbolos associados que podem ser publicados em servidores de símbolos.
Criando um pacote de símbolo herdado
Para criar um pacote de símbolo herdado, siga estas convenções:
- Nomeie o pacote primário (com o seu código)
{identifier}.nupkg
e inclua todos os arquivos, exceto os arquivos.pdb
. - Nomeie o pacote
{identifier}.symbols.nupkg
de símbolos herdado e inclua sua DLL de assembly,.pdb
arquivos, arquivos XMLDOC, arquivos de origem (consulte as seções a seguir).
Você pode criar pacotes com a opção -Symbols
de um arquivo .nuspec
ou um arquivo de projeto:
nuget pack MyPackage.nuspec -Symbols
nuget pack MyProject.csproj -Symbols
Observe que pack
requer o Mono 4.4.2 no Mac OS X e não funciona em sistemas Linux. Em um Mac, você também precisa converter os nomes de caminho do Windows no arquivo .nuspec
em caminhos no estilo Unix.
Estrutura do pacote de símbolos herdado
Um pacote de símbolo herdado pode ter como destino várias estruturas de destino da mesma forma que um pacote de biblioteca, portanto, a estrutura da lib
pasta deve ser exatamente a mesma que o pacote primário, incluindo .pdb
apenas arquivos ao lado da DLL.
Por exemplo, um pacote de símbolo herdado direcionado ao .NET 4.0 e ao Silverlight 4 teria esse layout:
\lib
\net40
\MyAssembly.dll
\MyAssembly.pdb
\sl40
\MyAssembly.dll
\MyAssembly.pdb
Arquivos de origem são, então, colocados em uma pasta especial separada chamada src
, que precisa seguir a estrutura relativa do repositório de origem. Isso ocorre porque PDBs contêm caminhos absolutos para arquivos de origem usados para compilar a DLL correspondente e eles precisam ser encontrados durante o processo de publicação. Um caminho base (prefixo de caminho comum) pode ser removido. Por exemplo, considere uma biblioteca criada a partir desses arquivos:
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)
Além da lib
pasta, um pacote de símbolo herdado precisaria conter este layout:
\src
\Common
\MyClass.cs
\Full
\Properties
\AssemblyInfo.cs
\Silverlight
\Properties
\AssemblyInfo.cs
\MySilverlightExtensions.cs
Fazendo referência a arquivos no nuspec
Um pacote de símbolo herdado pode ser criado por convenções, a partir de uma estrutura de pastas, conforme descrito na seção anterior, ou especificando seu conteúdo na files
seção do manifesto. Por exemplo, para compilar o pacote mostrado na seção anterior, use o seguinte no arquivo .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>
Confira também
- Criando pacotes de símbolo (.snupkg) – O novo formato recomendado para pacotes de símbolos