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.

 

Criando NuGet Feeds Remoto

8/25/2012 7:18:46 PM By Felipe Pessoto

Veja o artigo anteior, como criar um Feed Local

Em algumas empresas existem restrições de quais bibliotecas devem ser usadas, portanto você pode criar um servidor interno somente com as Packages que desejar.

Também é um excelente recurso para colocar as bibliotecas desenvolvidas internamente, facilitando o gerenciamento das dependencias e atualizações, que é o meu caso.

Na Athié criamos algumas bibliotecas que são usadas em diversos projetos, incluindo um pacote que não é bem uma biblioteca, mas um conjunto de arqivos que facilitam muito o start de um novo projeto, configurando Logs de erros, Master Page com o layout padrão da empresa, bibliotecas jQuery, autenticação, profiler do banco de dados, etc. É só criar um novo site, instalar o package e começar a programar o que interessa.

Existem duas possibilidades, criar um feed a partir de um diretório, seja local ou uma pasta de rede, ou hospedar via HTTP. A primeira opção é mais simples, porém fica mais dependente do caminho de rede e não possui cache, sendo que toda operação requer a leitura de todas as Packages. Neste artigo vou mostrar como criar um Feed remoto

Criando Feeds Remoto

Read more...

Criando NuGet Feeds Locais

8/25/2012 6:40:27 PM By Felipe Pessoto

Em algumas empresas existem restrições de quais bibliotecas devem ser usadas, portanto você pode criar um servidor interno somente com as Packages que desejar.

Também é um excelente recurso para colocar as bibliotecas desenvolvidas internamente, facilitando o gerenciamento das dependencias e atualizações, que é o meu caso.

Na Athié criamos algumas bibliotecas que são usadas em diversos projetos, incluindo um pacote que não é bem uma biblioteca, mas um conjunto de arqivos que facilitam muito o start de um novo projeto, configurando Logs de erros, Master Page com o layout padrão da empresa, bibliotecas jQuery, autenticação, profiler do banco de dados, etc. É só criar um novo site, instalar o package e começar a programar o que interessa.

Existem duas possibilidades, criar um feed a partir de um diretório, seja local ou uma pasta de rede, ou hospedar via HTTP. A primeira opção é mais simples, porém fica mais dependente do caminho de rede e não possui cache, sendo que toda operação requer a leitura de todas as Packages. Neste artigo vou mostrar como criar um Feed local

Criando Feeds Locais

Read more...

Web.Config Transform e Preview Transform no VS2012

8/21/2012 2:25:00 AM By Felipe Pessoto

Época de muitas novidades, com a versão final do Visual Studio 2012, .NET 4.5 e Windows 8, o que inclui o IIS 8.0.

Transformções no Web.Config em cascata

O VS2012 traz uma nova opção para transformação do web.config. Na versão 2010 a transformação do Web.Config era associada ao Build, por padrão Debug e Release, o problema era que normalmente queremos um Web.Config por ambiente, staging, produção, etc.

Agora é possível criar transformações que são aplicadas pelo perfil do Publish. Por exemplo, você pode ter um perfil Staging e um Produção que usam o build Release. Neste caso ambas transformações serão aplicadas: web.release.config + web.staging.config ou web.release.config + web.producao.config. Assim no web.release.config podemos fazer configurações como remover o atributo debug, e no web.staging.config e web.producao.config configurar url´s e dados especificos de cada ambiente.

 

Pré Visualização de Transformação de Web.Config

Antigamente era necessário publicar o projeto pra somente visualizar a transformação do Web.Config, agora é possível pré visualizar o web.config final, além de eventuais erros no web.config ou arquivos de transformação:

 

Conectando VPN Cisco no Windows 8

7/11/2012 12:46:43 AM By Felipe Pessoto

Essa VPN Cisco sempre dá alguns problemas quando sai uma nova versão do Windows, foi assim pro Vista, 7 e agora o 8. Estou usando a versão 5.0.07.0440 no Windows 8 Release Preview e recebo o seguinte erro: Fails to enable virtual adapter

Mas a solução no meu caso foi simples, basta editar uma chave no registro:

  • Abra o editor do registro executando o regedit
  • Navegue até a chave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA
  • Edite a chave DisplayName removendo todo o início até o "%;" por exemplo:
  • Para sistemas x86, mude o valor de "@oem8.inf,%CVirtA_Desc%;Cisco Systems VPN Adapter” para "Cisco Systems VPN Adapter"
  • Para sistemas x64, mude o valor de "@oem8.inf,%CVirtA_Desc%;Cisco Systems VPN Adapter for 64-bit Windows” para "Cisco Systems VPN Adapter for 64-bit Windows"

Abri o software da VPN novamente e agora conectou normalmente.