如何指定将安装所有nuget包的一个中心位置,以便所有项目都可以引用相同的包文件夹。
当1个项目删除时,引用不依赖于另一个项目。所以我可以轻松地在单个文件夹中更新新版本的nuget并适用于所有版本。
它还可以节省源代码管理中的磁盘空间。
有人可以给我任何建议吗?
答案 0 :(得分:2)
实际上,有两个步骤可以正确地将软件包还原到其他位置。假设您使用了Visual Studio(右键单击解决方案 - >启用包还原),您将在解决方案所在的同一目录中有一个 .nuget 目录。你需要编辑两个文件才能做到这一点。
修改 NuGet.Config 添加documentation。
中指定的存储库路径设置<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<config>
<add key="repositorypath" value="..\..\packages" />
</config>
</configuration>
.. \ packages将模仿默认行为。 路径是相对于项目文件夹(不是.nuget文件夹)所以.... \将是项目文件中的目录。
如果您的项目到处都是,请考虑将 Nuget.config 文件移动到源树的根目录,并配置相对于该位置的repositryPath
。当然,您也可以使用完整路径但这很难看。
其次,您需要从restore命令中删除solutionDir
选项(它们不会告诉您在任何地方执行此操作)。为此,请修改 NuGet.targets
查找RestoreCommand
元素并删除solutionDir
参数。
来自:<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
对此:<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch)</RestoreCommand>
根据您使用哪个版本的Visual Studio生成文件,实际的XML可能与我的示例不同。只需确保删除该选项并将其他所有内容保持不变。
NB :现在您已经更改了packages目录的位置(或者甚至将其命名为其他名称),您需要更新项目引用以指向新位置。显然建议使用相对路径。您可以在Visual Studio中手动执行此操作(痛苦)或打开.csproj / .vbproj文件并查找/替换HintPath
以供参考。
答案 1 :(得分:1)
您可以通过nuget.config文件指定packages文件夹的放置位置(或更改其名称)。
请参阅:NuGet Configuration Settings或Specify ‘packages’ Folder Location