A solução proposta nas notas de versão para 2.1 não funciona pronta para uso. Eles esqueceram de mencionar que há código:
internal string ResolveInstallPath()
{
if (!string.IsNullOrEmpty(this.OutputDirectory))
{
return this.OutputDirectory;
}
ISettings settings = this._configSettings;
...
}
o que impede que ele funcione. Para corrigir isso, você precisa modificar o arquivo NuGet.targets e remover o parâmetro 'OutputDirectory':
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch)</RestoreCommand>
Então agora, se você adicionar a configuração 'repositoryPath' em algum lugar no NuGet.config (consulte as notas de versão para obter uma descrição dos locais válidos para colocar os arquivos de configuração), ele restaurará todos os pacotes em um único local, mas ... Seu .csproj ainda contém dicas para montagens escritas como caminhos relativos ...
Ainda não entendo por que eles foram difíceis, em vez de alterar o PackageManager, para adicionar caminhos de dica em relação ao PackagesDir. É assim que faço manualmente para ter diferentes locais de pacotes localmente (na minha área de trabalho) e no agente de compilação.
<Reference Include="Autofac.Configuration, Version=2.6.3.862, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>$(PackagesDir)\Autofac.2.6.3.862\lib\NET40\Autofac.Configuration.dll</HintPath>
</Reference>