Правильное решение должно выглядеть следующим образом.
StringTemplate st = new StringTemplate("$msg$");
st.SetAttribute("msg", new StringTemplate("Hello $usr$"));
st.SetAttribute("usr", "Jakub");
Console.WriteLine(st);
// current output: "Hello Jakub"
// expected output: "Hello Jakub"
В следующий раз я дважды буду rtm, прежде чем спрашивать. Обещаю: -)