Вы пытаетесь сделать это динамически?
Области могут быть использованы, если это нежелательно, но, в конце концов, они представляют другую запись маршрута. Эта запись маршрута может быть динамически добавлена или жестко закодирована.
При добавлении маршрутов вы можете сделать что-то вроде
// used System.Reflection.Assembly.GetExecutingAssembly().GetName().Version to get the version then build the string you want
context.MapRoute(
"Versioned_default",
"<YOURVERSIONSTRING>/{controller}/{action}/{id}",
new { action = "Index", controller = "Home", id = UrlParameter.Optional }
);