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.

  1. Crie um aplicativo Web ASP.NET vazio no Visual Studio e adicione o pacote do NuGet.Server a ele.
  2. Configure a pasta Packages no aplicativo e adicione pacotes.
  3. 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

  1. Em Visual Studio, selecione Arquivo > Novo > Project, pesquise "ASP.NET Aplicativo Web (.NET Framework)", selecione o modelo correspondente para C#.

    Select the .NET Framework web project template

  2. Defina o Framework como ".NET Framework 4.6".

    Setting the target framework for a new project

  3. 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.

    Select the empty web project

  4. Clique com o botão direito do mouse no projeto e escolha Gerenciar Pacotes NuGet.

  5. 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.

    Installing the NuGet.Server package

  6. 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 modifica web.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 seu web.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.

  7. 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.

    Default home page for an application with NuGet.Server

  8. 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.

  9. Depois de testar sua implantação local, implante o aplicativo para qualquer outro site interno ou externo, conforme necessário.

  10. 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.cspor 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:

Copying packages to the Packages folder in the project

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.