Integre o recurso NuGet Package Restore no processo de checkout

5

Existem algumas situações em que não tenho conexão com a Internet e, por isso, sou forçado a trabalhar off-line. Normalmente, ficaria assim: eu me conecto, faço um checkout no servidor de controle de origem e saio do escritório. Os pacotes do NuGet permanecem no servidor, porque eu habilitei o Package Restore e deveria ter aberto o Visual Studio e disparado uma compilação pelo menos uma vez, para baixá-los.

Antes de usar o NuGet, nós tínhamos o gerenciamento de pacotes integrado usando os recursos externos do SVN. Os assemblies necessários foram baixados automaticamente durante o checkout. Mas este sistema tem algumas limitações, eu gostaria de me livrar.

A maneira preferida de usar o Package Restore seria executá-lo no checkout ou atualização. Existe alguma maneira de o fazer, usando ganchos para SVN (TortoiseSVN) ou GIT (TortoiseGIT, Github para Windows) como sistema de controle de versão?

    
por dwonisch 16.07.2014 / 15:35
fonte

2 respostas

1

Para o Git você pode usar um gancho post-commit. Para fazer isso, você criaria um script executável chamado post-checkout na pasta .git/hooks no repositório. No arquivo, você colocaria o seguinte:

/path/to/nuget.exe restore /path/to/solutionfile

No Linux / Mac, faça o seguinte:

#/bin/sh
mono /path/to/nuget.exe restore /path/to/solutionfile

e isso deve funcionar.

Isso será executado automaticamente após o check-out do repositório. Para ver mais informações sobre o comando nuget restore, consulte aqui .

    
por 20.12.2015 / 01:52
fonte
0

O que se segue não é uma resposta direta à sua pergunta, mas pode resolver o problema que levou à pergunta.

Temos um único diretório no controle de origem, onde colocamos todos os .nupkg usados pelos nossos projetos. (Sendo uma equipe relativamente pequena, esse diretório não é muito confuso.)

Nós ligamos este diretório no controle de origem para os diretórios do projeto, no seu caso, isso seria um SVN externo.

Além disso, colocamos um arquivo Nuget.Config no mesmo diretório que o arquivo .sln , onde adicionamos o diretório com check-out aos pacotes como fonte de pacotes:

<!-- ... -->
<packageSources>
  <add key="LocalPackages" value="relative/path/to/checked/out/directory" />
  <!-- ... -->

Para garantir que a restauração do pacote sempre use esse diretório, é possível adicionar

<activePackageSource>
  <add key="LocalPackages" value="relative/path/to/checked/out/directory" />
</activePackageSource>

mas isso tem a desvantagem de que pesquisar / instalar novos pacotes do nuget.org a partir de um projeto usando esse NuGet.Config requer mais alguns cliques.

Como resultado, o check-out de um projeto verificará todos os pacotes NuGet necessários (e mais alguns, o que poderia ser um con), e o NuGet / Visual Studio irá restaurá-los sem uma conexão de rede.

    
por 20.11.2015 / 00:10
fonte