我找不到任何控制使用哪个文件夹结构的配置设置。
我认为这种行为与 nuget 包格式packages.config和PackagesReference有关。
global-packages 文件夹 ( %userprofile%\.nuget\packages
) 是 NuGet 安装任何下载包的位置。每个包都完全展开到与包标识符和版本号匹配的子文件夹中。使用PackageReference格式的项目始终直接使用此文件夹中的包。使用 packages.config 时,包会安装到 global-packages 文件夹,然后复制到项目的 packages 文件夹中。从这里提示。
结论
使用 PackageReference 时,全局包文件夹中的 nuget 路径类似于结构 2。
\packages\roundhouse\1.1.0\roundhouse.1.1.0.nupkg
此外,从 global-packages 文件夹复制的解决方案中的包已将路径更改为结构 1。
\packages\roundhouse.1.1.0\roundhouse.1.1.0.nupkg
当您使用 package.config 格式时,Nuget 会出于某些特定原因修改从 global-packages 文件夹复制到解决方案的 nuget 的路径。
这只是 package.config 和 PackagesReference 的正常行为,它就是这样设计的。
更新1:
我发现你添加<PackageReference Include="roundhouse" Version="1.1.0" TargetFramework="net472" />
到一个核心项目的 xxx.csproj 中。这种格式就像框架项目的 packages.config 中的内容。我猜你只是将packages.config中的内容复制到核心项目的xxx.csproj中,尽管你使用了packageReference。另外,TargetFramework="net472"
意味着它会在 上安装包framework4.7.2
,所以它不会出现在核心项目中。
我做了这些测试;</p>
1)带有 packages.config 的框架项目
包.config

xxx.csproj

它加载 packages.config 以加载 nuget 包
2)带有 PackageReference 的框架项目
xxx.csproj

3)核心项目

所以我认为这是您导入 nuget 包的方式导致了这种奇怪的行为。并且请不要像TargetFramework="net472"
在核心项目(PackageReference)中那样使用packages.config格式。如果您确保在解决方案中的所有项目中都使用PackageReference,您可以尝试以下步骤:
解决方案:
1)清理nuget缓存
2)更改您在 xxx.csproj 中的初始参考格式,例如
<ItemGroup>
<PackageReference Include="roundhouse" Version="1.1.0" />
</ItemGroup>
然后你可以看看恢复路径是否不同。
希望它可以帮助你。