As per here: GetReferencedAssemblies doesn't return all assemblies, the C# compiler will remove any project references which it judges to be unused. I've confirmed this is still the case - examining the compiled dll shows that it has no reference to the "Referenced-but-unused" project.
The simplest 'hack' is create a dummy usage of the referenced project. But is there a better way to tell the Compiler that it shouldn't discard the "unused" references? Either for some specific project dependency, or just tell it not to do that at all.
Comments on the linked question seem to suggest not, but since that wasn't the primary subject of the question (and it was also asked > 10 years ago!) I'm hoping that there are new solutions to the problem.
Since people will no-doubt ask, I'm doing some reflection-y, attribute-tagged inferred associations work. Yes, it's ugly.