View models are specific to the particular application. I guess that the view models would differ between your web application and your console application. So have each application define its own view models and the corresponding mapping between the domain models and the view models. Don't have your domain models posses methods that convert them to view models because this way you are completely tying your domain layer to the UI layer which is the worst thing to happen. Use a mapping layer (which will be specific to each application type). AutoMapper is a great example of a mapping layer that you could have.
Don't even try to reuse ASP.NET MVC view models in a console application. As you have already found out they will contain references to System.Web.Mvc because for example a dropDownList in ASP.NET MVC is represented with the IEnumerable<SelectListItem> class whereas in a Console Application, god knows, maybe an IEnumerable<SomeItemViewModel>.
Conclusion: View models and mapping back and forth between the domain and view models belong to the UI layer (a.k.a ASP.NET MVC, Console, WPF, ...).
I am not trying to use my viewmodels in my console app. I am simply trying to move as much of my MVC code as possible outside the MVC project. I guess you are questioning the value of doing that. So if this code is in my MVC project where would it go (in the controller?, in another class?)
If it is MVC code, then it definitely should stay in your MVC application. Or in a separate assembly that has dependency on System.Web.Mvc but which you shouldn't be trying to reuse in other projects. What you should reuse is your domain models and business logic. That's something that could easily be moved to a separate layer which has no dependencies on MVC.
i updated the question to highlight one particular example where i send out emails from my console app and since the email data is almost identical to one of my views, i would like to leverage that ViewModel code. Clearly i don't need SelectListITem in my console app but the viewmodels that are just containers of various data and methods ideally should be reused . .
I wouldn't try to reuse any view models between different types of applications. You could have some base view models that do not contain view specific types and then have the actual view models derive from those base classes and add the specific types to the corresponding view.
In your first comment you state that "I am not trying to use my viewmodels in my console app" yet the second comment states "since the email data is almost identical to one of my views, i would like to leverage that ViewModel code". This appears to be a contradiction.