Pode ser interessante para algumas empresas e desenvolvedores criar seus próprios pacotes NuGet e hospedá-los em seu servidor local. Assim seu código fica protegido e pode continuar utilizando toda a praticidade do NuGet. A ideia é compartilhar, mas caso tenha algum código protegido ou algo do gênero, esta é uma boa alternativa.
Neste artigo vou mostrar como é simples criar um servidor NuGet é no final do artigo está o link para download do projeto completo.
Para facilitar o trabalho, vamos utilizar o pacote NuGet.Server. Então abra o Visual Studio e crie um novo web site vazio.
Menu File, selecione New Web Site.
Na lista de modelos, selecione ASP.NET Empty Web Site. Digite um nome do projeto e clique em OK.
Agora no Solution Explorer, clique com o botão direito sobre o projeto e selecione Manage NuGet Packages.
O NuGet vai abrir, ai clique na aba on-line e, em seguida, digite NuGet.Server no campo de busca do canto superior direito.
O NuGet.Server vai aparecer no resultado, então clique em Install e aceite os termos.
Se preferir, utilize o comando abaixo no console para instalar o pacote NuGet.Server.
Install-Package NuGet.Server
Depois de instalado o resultado é este:
E no browser é este:
Observação. A versão v2.7.41101 do NuGet.Server, que foi utilizada neste exemplo, não está registrando as rotas e retorna o erro 404 na listagem de pacotes. Para corrigir isso, Crie um novo Global.asax e insira o seguinte código no Application_Start :
void Application_Start(object sender, EventArgs e)
{
NuGetRoutes.Start();
}
Download do Global.asax aqui.
Por padrão, os pacotes são armazenados no diretório /Packages e podem ser acessados nesta URL:
http://localhost:54932/nuget/Packages
É possível modificar o o diretório padrão dos pacotes, basta editar a chave packagesPath no AppSetting do Web.config.
<appSettings>
<add key="packagesPath" value="C:\NugetPackages" />
</appSettings>
Como não temos nenhum pacote instalado o resultado ao acessar a URL será este:
Como publicar pacotes (.nupkg) em nosso servidor NuGet
São basicamente duas formas.
A primeira opção é simplesmente copiar e colar, ou passar via FTP os pacotes (.nupkg) para dentro do diretório Packages.
A segunda é habilitar a publicação de pacotes usando a ferramenta de linha de comando nuget (NuGet.exe). Para isso é preciso definir a chave apiKey no AppSetting do web.config e certificar-se de que a chave requireApiKey está com o valor true.
Veja o exemplo utilizando 7a291830-0924-495c-ba18-566c158a112d como apiKey.
<?xml version="1.0"?>
<configuration>
...
<appSettings>
<add key="requireApiKey" value="true"/>
<add key="apiKey" value="7a291830-0924-495c-ba18-566c158a112d"/>
...
</appSettings>
</configuration>
Adicionei manualmente um novo pacote chamado cbsa.1.0.8.nupkg veja como ficou:
http://localhost:54932/nuget/Packages:
Nosso servidor está pronto e funcioando. Faça download do projeto completo aqui.
Veja como configurar o NuGet.Server no IIS (Internet Information Services)
http://cbsa.com.br/post/configurar-o-nugetserver-no-iis-internet-information-services.aspx
E para configurar o novo servidor NuGet no Visual Studio acesse o artigo abaixo.
http://cbsa.com.br/post/adicionar-mais-origens-servidores-de-pacotes-nuget---visual-studio.aspx