NuGet不必要地恢复包

时间:2016-04-21 10:27:23

标签: visual-studio visual-studio-2015 nuget nuget-package-restore

我有以下项目结构:

MainSolution\ | +---> SharedProject\ | | | +---> SharedProject.csproj | +---> packages.config +---> SubSolution\ | | | +---> packages\ | +---> SubSolution.csproj | +---> SubSolution.sln | +---> packages.config +---> packages\ +---> MainSolution.sln

MainSolution.sln是主要解决方案,引用了众多项目,包括SharedProject.csproj SubSolution.sln仅引用SubSolution.csprojSharedProject.csproj

SharedProject.csproj的包引用指向..\packages\(即MainSolution\packages\SubSolution.csproj的包引用指向packages\(即MainSolution\SubSolution\packages\)。

NuGet作为扩展安装在Visual Studio中。

问题

我在Visual Studio中打开MainSolution.sln并构建,NuGet恢复SharedProject.csproj所需的所有包,这些包被正确放置在MainSolution\packages\中。这是预期的。

我在Visual Studio中打开SubSolution.sln。我检查了SharedProject.csproj的包引用,它们都指向了预期的位置(MainSolution\packages\)。

我现在构建SubSolution.sln,NuGet会恢复SharedProject.csprojSubSolution.csproj所需的所有包。 但是,它不会检测到SharedProject.csproj所需的软件包已经存在于磁盘上 - 它会再次(下载)这些软件包再次并将它们放入当前解决方案的packages目录,即MainSolution\SubSolution\packages\。所以现在这些包不必要地重复了。

问题

构建SubSolution.sln时,为什么NuGet(和/或Visual Studio)选择将SharedProject.csproj引用的包复制到当前解决方案的packages目录中 - 而不是仅使用引用已存在于MainSolution\packages\目录中的软件包?

0 个答案:

没有答案