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>