If your project doesn’t reference the RhinoCommon or Grasshopper Nuget packages directly, but rather references a project that references those, the build .targets file is ignored and the .dlls are copied to the output folder (unless you add additional config to the csproj).
In the newer (a few years old now) “sdk style” .csproj files, package references are transitive by default, before they weren’t.
If you have a dependency that uses RhinoCommon, you don’t need to add RhinoCommon reference again on the top project, so you can clean up your project from references that you know are already referenced downstream.
The issue is that .props and .targets didn’t follow the same transitive behavior as package references, so they added this fix of using the /buildTransitive folder.
I ran into this issue because I have a plugin split into separate projects and wanted to clean up unnecessary references. I also have a second plugin that depends on the first plugin and just like with RhinoCommon, I published a nuget package of the first plugin with a .targets file to avoid copying the binaries. Hope it makes sense.