Une solution qui me satisfait consiste à utiliser le package `version` et un script bash pour la compilation.
Le script bash
pdflatex examen.tex
pdflatex -jobname="correction" "\\newcommand*\\afficheCor{b}\\input{examen}"
et le source
\documentclass{article}
\usepackage{versions}
\newenvironment{Exercice}{}{}
\unless\ifdefined\afficheCor
\excludeversion{Solution}
\else
\newenvironment{Solution}{}{}
\fi
\begin{document}
\begin{Exercice}
\begin{itemize}
\item Ma question.
\begin{Solution}
Ma solution.
\end{Solution}
\end{itemize}
\end{Exercice}
\end{document}