I agree with the ticking answer. Good for you, David. In fact, I was relieved to see the answer, I thought I was crazy.
I see this interesting pen-in-pen pattern in C # corporate jobs all the time, where people follow the crowd agreement and the team needs to meet, and doesn't meet the requirements.
Another crazy thing is one namespace for every meaningless assembly. Thus, you get the SomeBank.SomeApp.Interfaces namespace and everything in it.
For me, this means that types are scattered across namespaces and assemblies containing a whole bunch of things that I care about, you need to reference everywhere.
As for interfaces, I don’t even use interfaces in my personal applications; DI works on types specific to virtual, base classes, or interfaces. I select accordingly and place the types in the DLL according to what they do.
I never had a problem with DI logic or swap later.
• .NET assemblies are a security unit, application and deployment area of ​​the API and are not dependent on namespaces.
• If two assemblies are dependent on each other, they cannot be deployed and versioned separately and must be combined.
• Having a large number of DLLs often means creating a lot of public materials, so it's hard to tell the actual public API from type members who were supposed to be published because they were arbitrarily placed in their own assembly.
• Should code outside my DLL use my type?
• Start conservative; Usually I can easily move the type of layer, it's a bit more complicated in the opposite direction.
• Can I neatly pack my area or framework into a NuGet package so that it is fully optional and version accessible, like any other package?
• Are my types consistent with the delivery of the function and can they fit into the function namespace?
• Many real libraries and frameworks are branded, which simplifies their discussion, and they do not burn namespace names that suggest its use or are ambiguous, can I reinforce the components of my application using "code names" such as Steelcore, and not generic clichéd and confusing terms, errm 'Services'?
Edit
This is one of the incomprehensible things that I see in development today. This is so bad.
You have an API, so put all its types in one API project. Only push them when you need to use / reuse them. When you move them, move them directly to the NuGet package with a clear name that bears the intention and focus of the package. If you are fighting for a name and consider "Common", perhaps because you are creating a landfill.
You must include your NuGet package in a family of related packages. Your "main" package should have minimal dependencies on other packages. The types inside are associated with use and are dependent on each other.
Then you create a new package for more specialized types and subtypes that require additional sets of dependencies; more clearly: you break down the library according to its external dependencies, and not according to type of type, as well as about its interface or exception.

Thus, you can use all your types in one large library, but some more specialized types (color spots) depend on some external libraries, so now your library needs to use all these dependencies. This is optional; you must break these types down into additional specialized libraries that require the necessary dependencies.
Types in packages A and B can belong to the same namespace. Link A includes one set of types, and then, optionally, link B complements the namespace with even more connectives.
What is it.
Luke