Решение, предложенное в примечаниях к выпуску 2.1, не работает "из коробки". Они забыли упомянуть, что есть код:
internal string ResolveInstallPath()
{
if (!string.IsNullOrEmpty(this.OutputDirectory))
{
return this.OutputDirectory;
}
ISettings settings = this._configSettings;
...
}
что мешает ему работать. Чтобы это исправить, вам нужно изменить файл NuGet.targets и удалить параметр «OutputDirectory»:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch)</RestoreCommand>
Так что теперь, если вы добавите конфигурацию 'repositoryPath' где-нибудь в NuGet.config (см. Примечания к выпуску для описания допустимых мест для размещения файлов конфигурации), он восстановит все пакеты в одном месте, но ... Ваш .csproj по-прежнему содержит подсказки для сборок, записанных в виде относительных путей ...
Я до сих пор не понимаю, почему они пошли не так, как надо, вместо того, чтобы изменить PackageManager, чтобы он добавлял пути подсказок относительно PackagesDir. Именно так я делаю вручную, чтобы иметь разные местоположения пакетов локально (на моем рабочем столе) и в агенте сборки.
<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>