Let's say you have good separation of concerns for a given application such that you have all of your business logic in a single project (let's call it MyApp.Core) and that project has no explicit dependencies on other projects. The repository implementations are in MyApp.Infrastructure and the presentation is in MyApp.UI. Unit tests are in MyApp.Tests.
Now let's say you plan on adding a few new applications. Roughly 50% of your existing business logic can be reused by those other applications. An example of a reusable object might be Customer.
How should the business logic be organized to facilitate this while continuing to meet the goals currently addressed with the existing solution (SoC, DI, etc.)?
I'm looking for answers that suggest explicit organization (i.e. redistribute code among multiple projects, logically divide existing project with folders/namespaces, keep business logic for each application isolated (violates DRY?), etc.).
If it helps, the current application is ASP.NET MVC but the new apps could be WPF, ASP.NET, Winforms, etc. (all MS technologies).
Thank you!