Atualmente, empacoto as compilações de lançamento com Nuget para as compilações oficiais em nuget.org, mas empacoto as compilações de depuração com Nuget para os envios de fonte de símbolo para symbolsource.org.
EDITAR: (Jon Skeet, com algum viés do desenvolvimento da Noda Time)
O NuGet agora oferece suporte para envio à galeria do NuGet e aos symbolsource.org (ou servidores semelhantes), conforme documentado . Infelizmente, existem dois requisitos contraditórios aqui:
- Ao usar uma biblioteca sem qualquer necessidade de depuração, você realmente deseja uma versão de lançamento. Afinal, é para isso que servem as versões de lançamento.
- Ao depurar em uma biblioteca para fins de diagnóstico, você realmente deseja uma compilação de depuração com todas as otimizações apropriadas desabilitadas. Afinal, é para isso que servem as compilações de depuração.
Isso seria ótimo, mas o NuGet não permite (até onde eu sei) permite que as compilações de lançamento e depuração sejam publicadas de uma maneira útil, no mesmo pacote.
Então, as opções são:
- Distribua as compilações de depuração para todos (conforme mostrado no exemplo nos documentos) e viva com qualquer tamanho e desempenho.
- Distribua as compilações de lançamento para todos e viva com uma experiência de depuração ligeiramente prejudicada.
- Escolha uma política de distribuição realmente complicada, potencialmente fornecendo pacotes separados de lançamento e depuração.
Os dois primeiros realmente se resumem ao efeito das diferenças entre as compilações de depuração e de lançamento ... embora seja importante notar que também há uma grande diferença entre querer entrar no código de uma biblioteca porque você deseja verificar algum comportamento e querer para depurar o código de uma biblioteca porque você acredita que encontrou um bug. No segundo caso, provavelmente é melhor pegar o código da biblioteca como uma solução do Visual Studio e depurar dessa forma, então não estou prestando muita atenção nessa situação.
Minha tentação é apenas continuar com os builds de lançamento, com a expectativa de que relativamente poucas pessoas precisarão depurar, e aqueles que precisam não serão muito afetados pelas otimizações no build de lançamento. (O compilador JIT faz a maior parte da otimização de qualquer maneira.)
Então, há outras opções que não consideramos? Existem outras considerações que fazem pender a balança? O envio de pacotes NuGet para a SymbolSource é suficientemente novo para que as "melhores práticas" não tenham sido estabelecidas?
nuget pack ... -Symbol
e empurrando os pacotes gerados ...