发行说明中针对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>