Antes do NuGet, era comum a 'prática recomendada' fazer o check-in de todas as DLLs externas usadas em um projeto. Normalmente em um diretório Libs
ou 3rdParty
.
Ao trabalhar com o NuGet, devo fazer check-in no packages
diretório ou há uma maneira de o MSBuild baixar automaticamente os pacotes necessários do feed do nuget?
version-control
msbuild
nuget
Scott Weinstein
fonte
fonte
Respostas:
Não
Uma vez que esta pergunta foi feita, agora existe um fluxo de trabalho fácil para usar o NuGet sem submeter pacotes ao controle de origem
No console do gerenciador de pacotes, você precisa instalar o 'NuGetPowerTools' :
Em seguida, para habilitar seus projetos para oferecer suporte à restauração de pacote, você precisa executar outro comando:
Agora você está pronto para confirmar sua base de código sem a pasta de pacotes. O comando anterior alterou seus arquivos de projeto para que, se os pacotes estiverem ausentes, eles sejam baixados e adicionados automaticamente.
Fonte
Usando NuGet sem submeter pacotes ao controle de origem
fonte
Enable NuGet Package Restore
,. Veja a documentação .Sim. Considere o diretório "packages" equivalente ao diretório "libs" que você mencionou em sua pergunta. Esta é a abordagem que eu pessoalmente adoto com meus projetos de OSS.
Estamos investigando recursos que permitiriam ao MSBuild fazer download automático dos pacotes necessários, mas que não foram implementados (a partir do NuGet 1.1).
Acho que algumas pessoas já podem ter implementado esses recursos por conta própria, mas nosso plano é ter esse recurso integrado ao NuGet 1.2 ou 1.3, com sorte.
fonte
Apesar de todas as respostas aqui, ainda é uma solução horrível e simples não ter todas as suas dependências sob "algum tipo" de controle de versão.
Para GIT, isso significaria GIT-LFS.
O episódio recente com o NPM mostra por quê: se o repositório da Internet do qual você depende quebrar, não estiver disponível, etc., então você está ferrado, não é?
Você não é mais capaz de construir suas coisas - e, portanto, não é capaz de entregar.
fonte
npm
quebrou porque não removeu os pacotes da lista, na verdade os excluiu. NuGet não faz isso; se em algum ponto você não conseguir acessar o NuGet, algo está terrivelmente errado. Não acho que armazenar um craptonne de dependências no git seja uma boa solução: apenas bloqueie suas dependências para uma versão específica e tenha um espelho entre você e a internet se isso for importante para você.Desde que fiz a pergunta, coloquei a seguinte abordagem para não ter que verificar no diretório Toplovel Packages .
Em um arquivo build.msbuild de nível superior:
Em cada arquivo project.csproj
fonte
Sei que a realidade era diferente quando esta pergunta foi postada e respondida originalmente, mas felizmente a resposta mudou um pouco. Agora é possível usar o NuGet para baixar dependências por meio do MSBuild usando um evento Pre-Build. Você não precisa colocar a pasta de pacotes em seu repositório de código, todas as dependências serão baixadas e / ou atualizadas no build. Pode ser uma solução alternativa, mas parece decente o suficiente. Consulte a seguinte postagem do blog para obter detalhes: http://blog.davidebbo.com/2011/03/using-nuget-without-committing-packages.html
fonte
A partir de 20/09/13, existe algo chamado "Restauração Nuget". Na verdade, você não precisa fazer o check-in da pasta do pacote se desejar. (Especialmente se você estiver usando DVCS)
Verifique isto: Usando NuGet sem confirmar pacotes para o controle de origem http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
fonte
Esta postagem está muito desatualizada. A resposta ainda é NÃO, mas a solução mudou. A partir do NuGet 2.7+, você pode habilitar a restauração automática de pacotes sem incluir o arquivo NuGet.exe em sua origem (isso é indesejável para dizer o mínimo) e se você usar qualquer DVCS moderno, pode ignorar a pasta de pacotes. Se você precisar de qualquer personalização especial, pode criar um arquivo nuget.config na raiz da solução.
http://docs.nuget.org/docs/reference/package-restore
Além disso, com o novo formato csproj, você pode evitar os arquivos nuget.config extras, já que agora está integrado. Confira esta postagem que explica isso melhor:
A pasta .nuget deve ser adicionada ao controle de versão?
fonte