Существующий код для работы с файлами проектов

mpt-csproj
 

Проект в CWDev.SLNTools

https://github.com/ArsenShnurkov/slntools/blob/master/Main/CWDev.SLNTools.Core.dll/Project.cs
однако эта модель проекта вообще, а не конкретно .csproj
из-за этого нельзя получить список файлов, список ресурсов, список результирующих файлов... Это печально.

Проект в MsBuild

To create a project programatically, you can use Microsoft.Build.Evaluation.Project (MSDN documentation)
https://github.com/Microsoft/msbuild/blob/master/src/XMakeBuildEngine/Definition/Project.cs#L75-L76
The MIT License (MIT)

"Represents a project with design time semantics. This class can load project files, edit items and properties and build projects."
https://github.com/Microsoft/msbuild/blob/master/src/XMakeBuildEngine/Evaluation/ProjectParser.cs
https://github.com/Microsoft/msbuild/blob/master/src/Shared/ProjectWriter.cs
https://github.com/Microsoft/msbuild/tree/master/src/Framework

Проект в Monodevelop

Там своя абстракция или они используют наследование от MSBuild? Своя.
Project - public class
    SolutionItem - public abstract class
        SolutionFolderItem - public abstract class
            WorkspaceObject - public abstract class
                IExtendedDataItem - public interface
                    IDictionary ExtendedProperties { get; }
                IFolderItem - public interface
                    FilePath BaseDirectory { get; }
                IDisposable
            IPolicyProvider
                PolicyContainer Policies { get; }
        IWorkspaceFileObject - public interface
            IFileItem - public interface
                FilePath FileName { get; set; }
            IDisposable
            IEnumerable<FilePath> GetItemFiles (bool includeReferencedFiles);
            new FilePath FileName { get; set; }
            bool NeedsReload { get; set; }
            bool ItemFilesChanged { get; }
            Task SaveAsync (ProgressMonitor monitor);
            string Name { get; set; }
            FilePath BaseDirectory { get; }
            FilePath ItemDirectory { get; }
        IConfigurationTarget - public interface
            IBuildTarget - public interface
        IBuildTarget - why to duplicate ???
        IMSBuildFileObject
            IWorkspaceFileObject
        IRunTarget - public interface

MPFProj = Visual Studio Managed Package Framework for Projects

https://mpfproj.codeplex.com (Ms-PL)
https://github.com/tunnelvisionlabs/MPFProj10

ProjectNode
ProjectReferenceNode
есть такое чувство, что это managed-обёртка над unmanaged кодом?
Из доки: "MPF_Proj is a framework that interacts with the traditional Visual Studio COM interfaces (through an interop layer)"
чувства смешаные. Во-первых сказано, что это Managed Framework, во вторых там довольно много managed кода...
ProjectFactory
VisualStudio.Project.cs - константы для локализации строк, как в Java

Roslyn Project System

Project
ProjectState
DocumentState.cs
/src/Workspaces/Core/Desktop/Workspace/MSBuild/CSharp
У меня сложилось впечатление, что сам .csproj они синтаксисом не считают, он там только как контейнер (список) других файлов.
CSharpProjectCodeModel
AbstractProjectCodeModel

И тут внезапно репозиторий:
https://github.com/dotnet/roslyn-project-system (Apache 2.0)
иии, судя по описанию - самое то, что надо. Однако как это использовать - неясно. Слишком раздроблены исходники по мелким файлам.
https://www.infoq.com/news/2016/05/Roslyn-Project-System/
The Common Project System still exists and the Roslyn Project System will sit on top of it.