The problem is actually the "lazy-loading nature" of assemblies in WPF - when the application starts, nRoute enumerate to see which assemblies are loaded in the app-domain. Now, because not a single type from the Sample.Core is used to render MainPage.xaml,
WPF delays the loading of assembly which in turn means nRoute doesn't get to enumerate it.
So the solution for it is quite simple, just manually tell nRoute to map the resources in the assembly like so:
this.Startup += new StartupEventHandler(App_Startup);
void App_Startup(object sender, StartupEventArgs e)
Or alternatively, you can use a more declarative approach to achieve the same by specifying a SiteArea and setting InitializeOnLoad to be true:
<n:SiteArea Key="Core" RemoteUrl="Sample.Core.dll" InitializeOnLoad="True" />
For the next release I'll try and put a workaround for lazily-loaded assemblies.