Criando NuGet Packages - Parte 1 - Convenções

8/30/2012 11:05:39 AM By Felipe Pessoto

Nos posts anteriores expliquei como criar seu próprio Feed Nuget, mas a grande vantagem é poder publicar seus Packages personalizados, permitindo distribuir para os Developers as bibliotecas usadas na sua empresa.

Antes de começarmos, vou explicar algumas convenções usadas, vou basicamente copiar a documentação original:

Package Id:

Os Packages devem seguir o mesmo padrão de nomenclatura dos namespaces no .NET. Por exemplo, Ninject.Mvc3 em vez de Ninject-Mvc3.

Packages de exemplo: Use o sufixo ".Sample" para o package, por exemplo, se o nome do seu package é Clay, então o exemplo de como usar clay será Clay.Sample. Também, dentro da pasta content, organize seus exemplos dentro de a estrutura /Samples/PackageID. Por exemplo, o package Clay.Sample deverá ter uma pasta /Samples/Clay.

Conteúdo do Package

Pasta App_Start: Quando usar o package WebActivator, coloque todo o código de inicialização da aplicação em uma pasta App_Start dentro da pasta Content. Veja este post para mais detalhes.

Assemblies: Em geral, faz sentigo ter um package por assembly. Em alguns casos, se sua biblioteca tem assemblies que não fazem sentigo em qualquer outro contexto exceto dentro da sua biblioteca, então tudo bem colocar estes assemblies dentro do mesmo package. Por exemplo, se você tem um Foo.dll que depende do Bar.dll e você acha que alguem pode depender do Bar.dll, então faça dois packages. Mas se você tem Foo.dll e Foo.resources.dll, então não faz sentido ter duas packages separadas.

Versionamento do Package

Para entender o versionamento no NuGet, a seguinte série de 3 posts é muito importante (e rápida!) Leia: NuGet Versioning Part 1: Taking on DLL HellPart 2: The core algorithmPart 3: Unification via Binding Redirects.

Escolhendo uma Versão: Em geral, faz sentido version o package de acordo com a versão da biblioteca, mas não esqueça as regras de versionamento que o NuGet usa caso sua biblioteca tem um esquema de versionamento não padronizado. Em geral é recomendado que a versão do package corresponda à biblioteca, mas não é obrigatório.

 


Comments (0)