Onion Architecture talks about separating the UI, Service, and Data Layers. All the samples usually given for this involve a single deployment model of the application. For example in .net most of the samples are
Web - MVC app
Core/Domain - Simple class library
Data - Entity Framework
What happens if my application has multiple deployment flavors? For example Azure resources versus On premise SQL Server. Does the solution break down into shareable projects? What happens when pieces of the infrastructure are shared?
Host - On-Premise - has the Program.cs and Startup class only, wires up all the dependencies. Also has logic to do migration/setup for infrastructure
Host - Azure - same as above
Web - Controllers, View, Models - but it class library not an app
Core/Domain - Doesn't change
Infrastructure - SQL
Infrastructure - Azure
Infrastructure - X
Is this correct thinking? should the "App Hosts" be as minimal as possible and wire everything up? Should infrastructures be separated by the infrastructure they are utilizing or the deployment style (On premise vs Azure)? Is it strange to have an infrastructure layer not implement all the repositories defined in domain layer?