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>
したがって、NuGet.configのどこかに「repositoryPath」構成を追加すると(構成ファイルを配置する有効な場所の説明については、リリースノートを参照してください)、すべてのパッケージが単一の場所に復元されますが、.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>