I would go with option 1. I think itβs quite reasonable for your project to refer to everything on which it depends, even if these dependencies can sometimes be indirect.
It also seems to be the easiest option for me - and one that is suitable for Visual Studio to view the code dependencies that your application needs ... so that everything Visual Studio does with these dependencies should just flow naturally and not have think about it at every stage.
EDIT: Have you considered using NuGet as an alternative? That way, you only express the dependency on X in your dependencies of the NuGet project, but he would βknowβ that it depends on Z. I believe that all this just works ... You should be able to do this, even if it internal projects, as you can install your own NuGet source, not a public repository.
source share