NuGet.Server
O NuGet.Server é um pacote fornecido pelo .NET Foundation que cria um aplicativo ASP.NET que pode hospedar um feed de pacote em qualquer servidor que executa o IIS. Em poucas palavras, o NuGet.Server disponibiliza uma pasta no servidor por meio de HTTP(S) (especificamente OData). É fácil de configurar e é melhor para cenários simples.
- Crie um aplicativo Web ASP.NET vazio no Visual Studio e adicione o pacote do NuGet.Server a ele.
- Configure a pasta
Packages
no aplicativo e adicione pacotes. - Implantar o aplicativo em um servidor adequado.
As seções a seguir abordam esse processo em detalhes usando o C#.
Caso tenha outras dúvidas sobre o NuGet.Server, crie um problema no https://github.com/nuget/NuGetGallery/issues.
Criar e implantar um aplicativo Web ASP.NET com o NuGet.Server
Em Visual Studio, selecione Arquivo > Novo > Project, pesquise "ASP.NET Aplicativo Web (.NET Framework)", selecione o modelo correspondente para C#.
Defina o Framework como ".NET Framework 4.6".
Dê um nome adequado ao aplicativo diferente de NuGet.Server, selecione OK e, na próxima caixa de diálogo, selecione o modelo Vazio e selecione OK.
Clique com o botão direito do mouse no projeto e escolha Gerenciar Pacotes NuGet.
Na interface do usuário do Gerenciador de Pacotes, selecione a guia Procurar e, em seguida, pesquise e instale a versão mais recente do pacote NuGet.Server se você estiver direcionando para o .NET Framework 4.6. (Você também pode instalá-lo no console do Gerenciador de Pacotes com
Install-Package NuGet.Server
.) Aceite os termos da licença, se solicitado.Instalar o NuGet.Server converte o aplicativo Web vazio em uma origem de pacote. Ele instala uma variedade de outros pacotes, cria uma pasta
Packages
no aplicativo e modificaweb.config
para incluir as configurações adicionais (veja os comentários no arquivo para obter detalhes).Importante
Inspecione cuidadosamente
web.config
depois que o pacote NuGet.Server tiver concluído as modificações desse arquivo. O NuGet.Server talvez não substituirá os elementos existentes, mas criará elementos duplicados. Essas duplicatas provocarão um "Erro Interno do Servidor" quando você tentar executar o projeto mais tarde. Por exemplo, se o seuweb.config
contiver<compilation debug="true" targetFramework="4.5.2" />
antes de instalar o NuGet.Server, o pacote não o substituirá, mas sim inserirá um segundo<compilation debug="true" targetFramework="4.6" />
. Nesse caso, exclua o elemento com a versão mais antiga da estrutura.Execute o site localmente em Visual Studio (usando Depurar > Iniciar sem Depuração ou Ctrl+F5). A home page fornece as URLs do feed do pacote, conforme mostrado abaixo. Se você vir erros, inspecione cuidadosamente os
web.config
elementos duplicados, conforme observado anteriormente.Na primeira vez que você executar o aplicativo, o NuGet.Server reestrutura a pasta
Packages
para conter uma pasta para cada pacote. Isso corresponde ao layout de armazenamento local introduzido no NuGet 3.3 para melhorar o desempenho. Ao adicionar mais pacotes, continue seguindo esta estrutura.Depois de testar sua implantação local, implante o aplicativo para qualquer outro site interno ou externo, conforme necessário.
Uma vez implantado no
http://<domain>
, a URL que você usa para a origem do pacote seráhttp://<domain>/nuget
.
Adicionar pacotes ao feed externamente
Quando um site do NuGet.Server está em execução, você pode adicionar pacotes usando o comando nuget push, desde que você defina um valor de chave de API em web.config
.
Depois de instalar o pacote do NuGet.Server, o web.config
contém um valor appSetting/apiKey
vazio:
<appSettings>
<add key="apiKey" value="" />
</appSettings>
Quando apiKey
for omitido ou estiver em branco, o push de pacotes para o feed está desabilitado.
Para habilitar essa capacidade, defina o apiKey
para um valor (o ideal é uma senha forte) e adicione uma chave denominada appSettings/requireApiKey
com o valor de true
:
<appSettings>
<!-- Sets whether an API Key is required to push/delete packages -->
<add key="requireApiKey" value="true" />
<!-- Set a shared password (for all users) to push/delete packages -->
<add key="apiKey" value="" />
</appSettings>
Se o servidor já está protegido ou você não exige uma chave de API (por exemplo, ao usar um servidor privado em uma rede de equipe local), é possível definir requireApiKey
para false
. Todos os usuários com acesso ao servidor poderão efetuar push dos pacotes.
Começando com NuGet. Servidor 3.0.0, a URL para envio por push de pacotes foi alterada para http://<domain>/nuget
. Antes da versão 3.0.0, a URL de push era http://<domain>/api/v2/package
.
Com NuGet 3.2.1 e mais recente, essa URL /api/v2/package
herdada é habilitada além /nuget
da opção por enableLegacyPushRoute: true
padrão na configuração de inicialização (NuGetODataConfig.cs
por padrão). Observe que esse recurso não funciona quando vários feeds são hospedados no mesmo projeto.
Removendo pacotes do feed
Com o NuGet.Server, o comando nuget delete remove um pacote do repositório, desde que você inclua a chave de API com o comentário.
Se, em vez disso, você desejar alterar o comportamento para remover o pacote da lista (deixando-o disponível para a restauração de pacote), altere a chave enableDelisting
em web.config
para true.
Configurar a pasta Pacotes
Com NuGet.Server
1,5 e posterior, você pode personalizar a pasta do pacote usando o appSettings/packagesPath
valor em web.config
:
<appSettings>
<!-- Set the value here to specify your custom packages folder. -->
<add key="packagesPath" value="C:\MyPackages" />
</appSettings>
packagesPath
pode ser um caminho absoluto ou virtual.
Quando o packagesPath
for omitido ou deixado em branco, a pasta de pacotes é o ~/Packages
padrão.
Disponibilizando pacotes ao publicar o aplicativo Web
Para disponibilizar esses pacotes no feed quando você publicar o aplicativo em um servidor, adicione os arquivos .nupkg
à pasta Packages
no Visual Studio e, em seguida, defina a Ação de Build deles como Conteúdo e Copiar para Diretório de Saída como Sempre copiar:
Notas de versão
Notas de versão para NuGet. O servidor está disponível na página de versão GitHub. Isso inclui detalhes sobre correções de bugs e novos recursos que são adicionados.
Suporte do NuGet.Server
Para obter ajuda adicional sobre o uso do NuGet.Server, crie um problema no https://github.com/nuget/NuGetGallery/issues.