public Project_v4 Serialize(string projectAbsPath, Project project)
{
var inputs = new List<ProjectFile_v3>();
inputs.AddRange(project.Programs.Select(p => VisitProgram(projectAbsPath, p)));
inputs.AddRange(project.MetadataFiles.Select(m => VisitMetadataFile(projectAbsPath, m)));
var sp = new Project_v4
{
// ".Single()" because there can be only one Architecture and Platform, realistically.
ArchitectureName = project.Programs.Select(p => p.Architecture.Name).Distinct().SingleOrDefault(),
PlatformName = project.Programs.Select(p => p.Platform.Name).Distinct().SingleOrDefault(),
Inputs = inputs
};
return sp;
}