Rozwiązanie zaproponowane w informacjach o wersji 2.1 nie działa od razu po wyjęciu z pudełka. Zapomnieli wspomnieć, że istnieje kod:
internal string ResolveInstallPath()
{
if (!string.IsNullOrEmpty(this.OutputDirectory))
{
return this.OutputDirectory;
}
ISettings settings = this._configSettings;
...
}
co uniemożliwia mu działanie. Aby to naprawić, musisz zmodyfikować plik NuGet.targets i usunąć parametr „OutputDirectory”:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(RequireConsentSwitch)</RestoreCommand>
Więc teraz, jeśli dodasz konfigurację „repositoryPath” gdzieś w NuGet.config (zobacz uwagi do wydania, aby znaleźć opis prawidłowych miejsc do umieszczenia plików konfiguracyjnych), przywróci wszystkie pakiety w jedną lokalizację, ale ... Twój .csproj nadal zawiera wskazówki do zespołów zapisanych jako ścieżki względne ...
Nadal nie rozumiem, dlaczego przeszli ciężką drogę zamiast zmiany PackageManagera, aby dodać ścieżki wskazówek względem PackagesDir. W ten sposób robię ręcznie, aby lokalnie mieć różne lokalizacje pakietów (na pulpicie) i agenta kompilacji.
<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>