Serializar y deserializar archivos de solución de Visual Studio, ¿o editar mediante programación?

Quería agregar y eliminar mediante programación proyectos, carpetas de soluciones y otros elementos como archivos de recursos a una solución, pero no estoy exactamente seguro de cuál sería la mejor manera de hacerlo.

Para aquellos que no saben, altamente simplificado; así es como se ve normalmente un archivo de solución (.sln):

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "project name", "projectpath\name.csproj", "{785ECC80-AF1B-4FBC-B97B-2EC43B7E81E8}"
EndProject
Global
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {785ECC80-AF1B-4FBC-B97B-2EC43B7E81E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
    EndGlobalSection
EndGlobal

No estoy seguro de si este es un estándar abierto real como xml (¿lo es?), Pero parece que el equipo de Visual Basic creó su propia versión de xml. (no es un cumplido)

e todos modos, ¿cuál sería la mejor manera de serializar y deserializar esto hacia y desde los objetos? Estaba pensando en hacer mi propio IFormatter, pero eso parece bastante complejo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta