ViewModels должны идти на прикладном уровне, потому что они, как правило, зависят от технологии.
Например, вы можете захотеть привязать атрибут View к определенному цвету в зависимости от состояния ViewModel. Однако Color реализован разными типами в Windows Forms, ASP.NET и WPF, поэтому вы не сможете повторно использовать ViewModel в разных технологиях.
Если вы добавляете новые Приложения, вы также должны предоставить новые ViewModels.