Visual studio NuGet不必要地恢复包
我有以下项目结构:Visual studio NuGet不必要地恢复包,visual-studio,visual-studio-2015,nuget,nuget-package-restore,Visual Studio,Visual Studio 2015,Nuget,Nuget Package Restore,我有以下项目结构: main解决方案\ | +--->共享项目\ | | |+-->SharedProject.csproj |+-->packages.config +--->下粘连\ | | |+-->包\ |+-->SubSolution.csproj |+-->SubSolution.sln |+-->packages.config +--->包裹\ +--->MainSolution.sln MainSolution.sln是主要解决方案,引用了许多项目
main解决方案\
|
+--->共享项目\
| |
|+-->SharedProject.csproj
|+-->packages.config
+--->下粘连\
| |
|+-->包\
|+-->SubSolution.csproj
|+-->SubSolution.sln
|+-->packages.config
+--->包裹\
+--->MainSolution.sln
MainSolution.sln
是主要解决方案,引用了许多项目,包括SharedProject.csproj
SubSolution.sln
仅参考SubSolution.csproj
和SharedProject.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.csproj
和SubSolution.csproj
所需的所有包但是,它没有检测到SharedProject.csproj
所需的包已经存在于磁盘上-它会再次恢复(下载)这些包,并将它们放在当前解决方案的包
目录中,即MainSolution\SubSolution\packages\
。因此,现在的包是不必要的重复
问题
在构建SubSolution.sln时,为什么NuGet(和/或Visual Studio)选择将SharedProject.csproj
引用的包复制到当前解决方案的packages
目录中,而不是仅使用已存在于MainSolution\packages\
目录中的引用包