Решение, предложенное в примечаниях к выпуску 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>